memset
memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。
头文件
在C中 <string.h>
在C++中 <cstring>
使用方法
void *memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 用 ch 替换并返回 s 。
注意 :由于他是按照字节赋值的,并不是按照数组每个数赋值的。int类型的数组,一个数占四个字节。
而你想将一个数组全部赋值为5的话 memset ( a , 5 , sizeof ( a ) ) 这样写并不能完成你的要求
因为一个int的数的四个字节都赋值为5 这个数并不是5(具体是啥 自行百度)
所以呢 由于这个函数是按字节赋值的特性 你并不能用它来将数组初始化为其他的值
只能初始化为那些每个字节都相同的数
我们一般用来初始化数组为 0 或者 0x3f3f3f3f 或 -1 (因为这两个数各个字节都一样)
也可以初始化bool数组为 ture 或者 false
用法实例
int a[100];
bool b[100];
const int INF=0x3f3f3f3f;
memset(a,0,sizeof(a));
memset(a,1,sizeof(a));//数组初始化为-1 -1每一位都是1
memset(a,INF,sizeof(a));
memset(b,true,sizeof(a));
fill
fill与memset不同的是,fill函数是按照单元赋值,将一个区间的元素都赋同一个值。
头文件是<algorithm>
fill
函数可以赋值任何数 使用也很简便
但是 由于memset按字节赋值的特性 memset事实上比 fill 快很多 ,节省了时间
fill用法
- 初始化数组 :fill ( a , a+n , 要填入的内容 )
vector
也可以:fill(v.begin(), v.end(), 要填入的内容);
#include<algorithm>
int main(){
int a[100];
fill(a,a+100,5);
}