2D std::array 初始化受限的原因
虽然 std::array 是一种非常简洁的容器,但它在初始化 2D 数组时存在一定限制。让我们探讨一下为什么如下所示的简单初始化无法正常工作:
std::array<std::array<int, 3>, 2> a { {1, 2, 3}, {4, 5, 6} };
错误:too many initializers for 'std::array
理解这个错误的关键在于 std::array 本质上是包含 C 数组的数据结构。因此,要初始化 2D std::array,需要额外的花括号:
std::array<std::array<int, 3>, 2> a { {{1, 2, 3}}, // 内层花括号用于初始化 C 数组 {{4, 5, 6}} };
这种额外的花括号嵌套允许编译器将初始化数据正确分配给 C 数组成员。因此,即使 std::array 是一种 C 类,其初始化语法却类似于 C 数组。
以上是为什么我不能像常规 2D 数组一样初始化 2D std::array?的详细内容。更多信息请关注PHP中文网其他相关文章!