c++的列表初始化问题

要初始化一个整型数组为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方法可以填充大多数数据类型,包括自定义的数据类型.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值