c++ - 将数组的所有元素初始化为C++中的一个默认值?

标签 c++ arrays initialization variable-assignment default-value

C++ Notes: Array Initialization有一个很好的数组初始化列表。我有一个

int array[100] = {-1};

期望它充满 -1 但不是,只有第一个值是,其余的都是 0 与随机值混合。

代码

int array[100] = {0};

工作正常并将每个元素设置为 0。

我在这里遗漏了什么。如果值不为零,就不能初始化它吗?

还有 2:默认初始化(如上)是否比通常循环遍历整个数组并赋值更快,还是做同样的事情?

最佳答案

使用您使用的语法,

int array[100] = {-1};

说“将第一个元素设置为 -1,其余元素设置为 0”,因为所有省略的元素都设置为 0 .

在 C++ 中,将它们全部设置为 -1 , 你可以使用类似 std::fill_n (来自 <algorithm> ):

std::fill_n(array, 100, -1);

在可移植 C 中,您必须滚动自己的循环。有编译器扩展,或者如果可以接受的话,您可以依赖实现定义的行为作为捷径。

关于c++ - 将数组的所有元素初始化为C++中的一个默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1065774/

相关文章:

c# - 从字节缓冲区中提取数据包

php - 在 CodeIgniter 中将数组与 Calendar 类一起使用

javascript - 如何使用 javascript 从数组的每个项目中删除字符串的特定部分?

java - 使用构造函数初始化静态字段是否总是被认为是不好的做法?

c - 有效地初始化 C 中的数组/数据 block

c++ - std::vector::erase 的 MoveAssignable 要求与 std::vector::emplace_back 的 MoveInsertable 要求

c++ - Box2d C++ AccessViolation 使用 b2fixture out 方法

database - 如何在不运行 PostgreSQL 服务器的情况下初始化 PostgreSQL 数据库

c++ - 带 *& 参数的递归 void 函数

c++ - 如何避免使用 std::bind() 临时对象进行显式转换?