全赋值0或-1
memset()
函数只能赋值0
或-1
.
#include <cstring>
// 正常
memset(a, 0, sizeof(a));
// 宏定义
#define mm(a) memset(a, 0, sizeof(a))
自定义全赋值、区间赋值
fill()
函数可定义其他值,且支持区间赋值.
#include <algorithm>
int a[20];
fill(a, a+10, 3);
fill_n()
函数从迭代器指向的元素开始,将指定数量的元素设置为给定的值.
#include <algorithm>
#include <iterator>
int a[20];
fill_n(a, 10, 3);
建议
使用fill()
和fill_n()
函数前,建议使用memset()
函数进行初始赋值,初始化是一种好习惯,也可规避一些玄学问题.