头文件:
fill函数的头文件为: std;
memset函数的头文件为: string.h (c++中为 cstring)
fill函数
用法:
fill(vector.begin(), vector.end(), val);
按照单元赋值,将一个区间内的元素都赋予val值;
实例:
#include <iostream>
using namespace std;
int main()
{
int a[100];
fill(a,a+100,99);
return 0;
}
memset函数
用法:
memset(arr, val, cnt);
将已开辟的内存空间arr的前cnt个字节设备值val;
memset函数是按照字节去赋值的,故val有限制的,常用于赋初值0;
实例:
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
const int INF = 0x3f3f3f3f;//特例,可用memset初始化
int main()
{
int a[100];
vector<int> graph[100];
memset(a,INF,sizeof(a));
memset(graph,0,sizeof(graph));
return 0;
}
区别:
- memset函数赋值是针对字节进行的,在赋初值为0时速度最快;
对char类型可用memset函数任意填充,char类型刚好占据一个字节; - fill函数可针对任意类型赋值,但赋值速度最慢(比循环赋值的速度慢);