【c++/c】fill和memset函数的区别

在ACM程序设计中我们常需要对数组进行一系列初始化赋值的操作,全部清空或者全部设置为最大值(一个你想指定的值),其中fill函数和memset函数最为常见,以下给出两个函数的常用方法和对比
  • memset包含在头文件cstring/string.h当中,分别隶属于c++/c的两个头文件

因为memset赋值时按照字节填充,所以更适合给char类型的数组赋值(一维/二维),因为在c/c++中char占用1一个字节(8位),而int占用2个字节,如果要使用memset给int赋值只适用于0,-1,但还有一种巧妙的方法,如果要将一个数组(一维/二维)全部赋值一个很大的值也可以通过将这个最大值M设置为0x3f3f3f3f(这是一个很巧妙的数字具体有兴趣的童鞋可以去查一下原因哦)

memset使用代码:

#include
#include
#include
using namespace std;

const int M=0x3f3f3f3f;

int main(){
    char a[20][20];
    char b[20];
    int c[20][20];
    int d[20];
    for(int i=1;i<=3;i++){
        a[i][i]='a';    
        b[i]='a';
    } 
    memset(a,'b',sizeof(a));
    memset(b,'b',sizeof(b));
    memset(c,M,sizeof(c));
    memset(d,M,sizeof(d));
    cout<<"a[3][3]="< 
  
memset.png
  • fill包含在头文件algorithm当中,可以给数组赋值任意数
  • fill(a,a+n,你想要赋值的数);
  • fill(a[0],a[0]+n*n,你想要赋值的数);

代码如下:

#include
#include
using namespace std;

int main(){
    int a[20];
    fill(a,a+20,20);
    cout<<"a[2]="< 
  
fill.png

你可能感兴趣的:(【c++/c】fill和memset函数的区别)