参考:传送门
memset函数:
- 在#include<cstring>中
- 按照字节填充(适用0,-1)
fill函数:
- 在#incude<algorithm>中
- 按照单元赋值,将一个区间的元素都赋同一个值
说明:因为memset
函数按照字节填充,所以一般memset
只能用来填充char
型数组,(因为只有char
型占一个字节)如果填充int
型数组,除了0
和-1
,其他的不能。因为只有00000000 = 0
,-1
同理,如果我们把每一位都填充“1
”,会导致变成填充入“11111111
”
综上:fill用起来更能满足大部分题的要求
int数组:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int arr[10];
memset(arr,1,sizeof(arr));
for(int i=0;i<10;i++)
printf("%d",arr[i]);
printf("\n");
fill(arr,arr+10,1);
for(int i=0;i<10;i++)
printf("%d",arr[i]);
return 0;
}
对于vector同样可以
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
vector<int>a;
for(int i=0;i<5;i++)
a[i]=i+1;
fill(a.begin(),a.end(),1);
for(int i=0;i<5;i++)
printf("%d",arr[i]);
return 0;
}