memset()是一个用于设置内存块值的函数它的原型定义在头文件中
memset()函数接受三个参数:
1.ptr:指向要设置值的内存块的指针。
2.value:要设置的值,通常是一个整数。
3.num:要设置的字节数。
memset()函数将ptr指向的内存块的前num个字节设置为value的值。它返回一个指向ptr的指针。
memset()函数通常用于初始化内存块,将其设置为特定的值。
例如,如果要将一个整型数组的所有元素设置为0,可以使用memset()函数如下
int arr[10];
memset(arr,0,sizeof(arr));
在上述示例中,memset(arr,0,sizeof(arr))将数组arr的所有元素设置为0.
需要注意的是,memset()函数对于非字符类型的数组可能会产生未定义行为。
在处理非字符类型的数组时,更好使用C++中的其他方法,如循环遍历来初始化数组,memset会将每个byte设置为value。
#include
using namespace std;
int main(void){
int arr[5];
memset(arr,0,sizeof(arr));
for(int i = 0;i<5;++i)
cout <(arr[i]) << ' ';
//00000001...
}
swap(T &a,T &b)函数接受两个参数:
1.a:要交换值的第一个变量的引用
2.b:要交换值的第二个变量的引用
swap()函数通过将第一个变量的值存储到临时变量中,然后将第二个变量的值赋给第一个变量,最后将临时变量的值赋给第二个变量,实现两个变量值的交换。
swap()函数可以用于交换任意类型的变量,包括基本类型(如整数、浮点数等)和自定义类型(如结构体、类对象等)
以下是一个示例,展示如何使用swap()函数交换两个整数的值。
int a = 5;
int b = 9;
std::swap(a,b);
reverse()是一个用于反转容器中元素顺序的函数。
它的原型定义在头文件中
reverse()函数接受两个参数:
1.first:指向容器中要反转的第一个元素的迭代器。
2.last:指向容器中要反转的最后一个元素的下一个位置的迭代器
reverse()函数将[first, last)范围内的元素顺序进行反转。也就是说,它会将[first,last)范围内的元素按相反的顺序重新排列。
reverse()函数可用于反转各种类型的容器,包括数组、向量、链表等
需要注意的是,reverse()函数只能用于支持双向迭代器的容器,因为它需要能够向前和向后遍历容器中的元素。
对于只支持单向迭代器的容器(如前向链表),无法使用reverse()函数进行反转。
unique()是一个用于去除容器中相邻重复元素的函数。它的原型定义在头文件中
unique(first, last)函数接受两个参数:
1.first:指向容器中要去重的第一个元素的迭代器。
2.last:指向容器中要去重的最后一个元素的下一个位置的迭代器。
unique() 函数将[first,last)范围内的相邻重复元素去除,并返回一个,去重后的范围中只保留了第一个出现的元素,后续重复的元素都被移除。
unique() 函数可用于去除各种类型的容器中的相邻重复元素,包括数组、向量、链表等
注意:相邻,如果不相邻需要重新排序
以下是一个示例,展示如何使用unique()函数去除一个整型向量中的相邻重复元素:
vector v = {1, 2 ,3 , 3 , 4 , 4 ,4 ,5};
auto t = unique(v.begin(),v.end());
//1 2 3 4 5 3 4 4
v.erase(t,v.end());//去除3 4 4
for(int i : v)
cout << i << ' ';
return 0;
需要注意的是,unique()函数只能去除相邻的重复元素,如果容器中存在非相邻的重复元素,则无法去除。
如果需要去除所有重复元素,而不仅仅是相邻的重复元素,需要对容器进行排序(sort),然后再使用unique()函数。
unique()时间复杂度为O(n)。