c++的列表初始化问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37407587/article/details/84673056

要初始化一个整型数组为0的时候, 我们通常可以这样写

int num[100] {0};

但是初始化这个整型数组为其他值的时候, 是否能这样写呢?

int num[100] {1};

printf打印下结果会发现是不可行的, 只有num[0]被初始化为1, 其他元素均为0.

那么 为什么写0的时候就是对的呢?

原因是因为对于列表初始化而言, 当列表中的元素少于数组元素的时候, 编译器会将后面的元素全部填为0, 所以初始化为0其实就是将数组的第一个元素初始化后, 利用编译器的这个功能将剩余的元素都初始化为0.

那么要初始化为其他值的时候, 应该怎么做?

  • 使用memset函数: memset函数是string.h中的一个函数, 其写法是memset(point_of_begin, value, size_of_item_to_fill); 这种方法的速度较快, 但是要注意到, 其初始化的时候是按字节初始化, 因此, 通常只能用它来初始化整型数组为-1和0
  • 使用fill函数, fill函数是algorithm中的一个函数, 其写法是
#include<algorihtm>
fill(begin_point, end_point, value);

注意到, begin和end的区间是左闭右开, 同时, 这两个值对于数组来说是指针, 对于容器来说是迭代器, fill方法可以填充大多数数据类型,包括自定义的数据类型.

猜你喜欢

转载自blog.csdn.net/m0_37407587/article/details/84673056