首先在:0 -1 inf(是比较大的值比如:0x3f3f3f3f)还是用memset比较好,因为memset更快
二者的区别:
memset函数:
a:按照字节填充字符
b:在#include<cstring>里
fill函数:
a:按照单元赋值,将一个区间元素都赋同一个元素
b:在#include<algorithm>里
原因:
因为memset函数是按照字节填充,所以一般memset只能用来填充char型数组(因为只有char型数组占一个字节),如果填充int 类型数组,除了0和-1和很大的数,其他都不能(因为 00000000=0,-1同理,如果把每一位都填充“1”,会导致变成填充 11111111了)
fill的使用方法:
比如arr是数组:
fill(arr,arr+n,要赋值的数)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int s[10];
fill(s, s + 10, 2);
for (int i = 0;i < 10;i++) cout << s[i] << endl;
return 0;
}
对于容器来说:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<int>p={ 1,2,3,4,5 };
fill(p.begin(), p.end(), 100);
for(int i=0;i<5;i++){
cout<<p[i]<<endl;
}
return 0;
}
补充:fill_n(arr,n,要赋予的值)看代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<int>p={ 1,2,3,4,5 };
fill_n(p.begin(),2,100);
for(int i=0;i<5;i++){
cout<<p[i]<<endl;
}
return 0;
}