1.memset
memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。
头文件:
#include<cstring>
使用方法:memset函数按字节对内存块进行初始化,所以不能用它将int数组初始化为0和-1之外的其他值
int q[100];
(1)赋值为-1
memset(q,-1,sizeof(q))
(2)赋值为0
memset(q,0,sizeof(q))
2.fill
当我们想对一个容器的值进行填充时,我们就可以使用fill()函数。
头文件:
#include<algorithm>
使用方法:fill(初始位置first,最终位置last,值) //填充范围为[first,last)
fill方法的应用场景
使用fill()函数填充普通一维数组
fill(q,q+3,5);//给q数组的q[0],q[1],q[2]赋值为5
使用fill()函数填充vector
vector<int> myvector (8);
fill (myvector.begin(),myvector.begin()+4,5); // myvector: 5 5 5 5 0 0 0 0
fill (myvector.begin()+3,myvector.end()-2,8); // myvector: 5 5 5 8 8 8 0 0
因为vector不再是普通的数组了(即使它可以被视作是一个数组),所以我们不需要使用数组首地址的方式,因为vector已经给我们封装好了方法,其初始地址就是vector.begin(),末位地址就是vector.end()。其余同array
使用fill()函数填充二维数组
int G[6][4];
fill(G[0],G[0]+6*4,520);
3.二者区别点
- memset主要对数组进行赋值,且对int型数组,只能赋值为0和-1
- fill函数可以对数组或其他容器,进行赋值,值可以任意
- fill和memset都作用于int型数组上时,fill方法速度较慢