全文参考自 柳婼 的博客https://blog.csdn.net/liuchuo/article/details/52296646
memset函数
按照字节填充某字符
在头文件<cstring>里面
fill函数
按照单元赋值,将一个区间的元素都赋同一个值
在头文件<algorithm>里面
因为memset函数按照字节填充,所以一般memset只能用来填充char型数组,(因为只有char型占一个字节)如果填充int型数组,除了0和-1,其他的不能。因为只有00000000 = 0,-1同理,如果我们把每一位都填充“1”,会导致变成填充入“11111111”
而fill函数可以赋值任何,而且使用方法特别简便:
例如int数组:fill(arr, arr + n, 要填入的内容);
#include <cstdio> #include <algorithm> using namespace std; int main() { int arr[10]; fill(arr, arr + 10, 2); return 0; }
vector
也可以:fill(v.begin(), v.end(), 要填入的内容);
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { vector<int> v{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; fill(v.begin(), v.end(), -1); return 0; }
-
使用fill初始化二维数组
类似如下用法:
fill(dis[0], dis[0]+maxn*maxn, INF);
因为
dis[0]
才是dis的首元素dis[0][0]
的地址。 - 而
memset
的使用方法是:
#include <iostream> #include <cstring> using namespace std; int main(){ int a[20]; memset(a, 0, sizeof a); return 0; }