如果需要零数组,用一对花括号初始化std::数组是否正确
Is it correct to initialize std::array by one pair of curly brackets if zeroed array needed?
我想知道这个构造是否:
std::array<int, 10> array { };
相当于:
std::array<int, 10> array { { } };
好吧,它们都编译了,并且都给出了相同的结果:
for (auto e : array) {
std::cout << e << ", ";
}
输出:
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
我知道,要通过选定的值初始化std::数组,由于聚合初始化,我必须使用双花括号。但我不知道它在单括号中的表现。所以,问题是:
在C++11中用单花括号初始化结构完全正确吗?(这意味着结构的所有字段都将为零)
编辑:正如@dyp所指出的,我在帖子中的问题更为笼统。让我们假设我的问题是关于只有琐碎元素的结构。
根据C++标准(8.5.1骨料)
7如果列表中的初始值设定项子句少于聚合中的成员,然后每个成员未显式初始化应通过其大括号或相等的初始化器进行初始化,或者,如果存在不是大括号或等号,来自空的初始值设定项列表(8.5.4).
和(8.5.4列表初始化第3页)
--否则,如果初始值设定项列表没有元素,则对象为值已初始化。
因此初始化
std::array<int, 10> array {};
和
std::array<int, 10> array { { } };
是等效的。
相关文章:
- C++使用整数的压缩数组初始化对象
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 字节数组初始化会导致 DirectX 崩溃
- 使用 new 和 值进行数组初始化,但没有显式数量的元素
- 运行时C++数组初始化问题
- 使用带有参数包的数组的成员数组初始化类
- 仅通过C++中数组初始化的不同方法,即可在同一输入上获得两个不同的答案
- C++ 2 个指针数组初始化 C2440
- C++结构字符数组初始化
- C++中的多维数组初始化
- constexpr数组初始化
- C++引物动态数组初始化程序的数目超过大小
- 使用std::index_sequence对std::数组初始化进行包扩展
- 当 std 数组初始化太小时,C++会引发错误吗?
- 如何确定结构数组初始化的大小?
- Qt并发错误:数组初始化需要大括号括起来的初始值设定项列表
- 此代码中的数组初始化样式是什么?这是标准的吗?
- C++ 使用数组初始化时的 STL 向量内存管理