使用默认成员初始值设定项对 std::array 的元素进行零初始化
Zero-initializing elements of a std::array with a default member initializer
假设我有一个这样的类模板:
template<typename T, size_t N>
struct S {
std::array<T,N> a;
};
是否有我可以放在a
上的默认成员初始值设定项,
template<typename T, size_t N>
struct S {
std::array<T,N> a = ???;
};
这样无论T
是什么,a
的元素都将始终被初始化(永远不会具有不确定的值)? 即,即使T
是像int
这样的原始类型。
这个:
template<typename T, size_t N>
struct S {
std::array<T,N> a = {};
};
这将递归复制初始化{}
中的每个元素。对于int
,这将初始化为零。当然,总有人可以写:
struct A {
A() {}
int i;
};
这将防止i
被初始化。但那是在他们身上。
std::array
是一种聚合类型。您可以使用空大括号{}
聚合初始化它,这将相应地初始化std::array
持有的内部T
数组的元素。
相关文章:
- 如何读/写或遍历 std::array 中的特定元素范围?
- 通过作为指向 C++ 函数的指针传递来访问 std::array 元素的正确方法是什么?
- std::初始值设定项列表来自现有的 std::array,而不枚举每个元素
- 如何有条件地将元素添加到 std::array - C++11
- 用一个额外的元素扩展 std::array 的每个 std::元组
- 创建 2D 数组类:如何访问 2D 数组类(如 array[x][y))中的元素
- 使用声明中的元素类型隐式初始化 std::array
- 访问双 std::array 的元素
- 键入 trait 以获取 std::array 或 C 样式数组的元素类型
- 在 C++ 中访问 std::array<std::array> 元素
- std::array :通过智能指针访问元素的成员
- C++17 有效地将参数包参数与 std::array 元素相乘
- 如何为所有“ std :: array”的工厂结构进行部分专业化,该结构超过4`元素
- 2D-Array 会在存储新元素时删除元素本身
- 使用默认成员初始值设定项对 std::array 的元素进行零初始化
- 如何知道您输入到std::array中的最后一个元素是什么?
- 不能直接分配元素 std::array,它说没有运算符"="匹配
- 向量是否比std::array多使用一个解引用来访问元素
- std::set for array 中的每个元素
- 无法访问c++中Array的元素