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);
}