使用大括号初始化 2D std::array
使用 C 时,使用大括号初始化 2D std::array 可能具有挑战性。以下代码片段说明了该问题:
std::array<std::array<int, 3>, 2> a { {1, 2, 3}, {4, 5, 6} };
此方法无法编译,编译器错误指示 std::array<:array>, 2u> 的初始值设定项太多。要理解为什么会发生这种情况,了解 std::array 的底层实现至关重要。
std::array 内部
std::array 是一个聚合,包含一个 C 风格的数组。因此,要正确初始化它,需要类本身的外大括号和 C 数组成员的内大括号:
std::array<int, 3> a1 = { { 1, 2, 3 } };
将此逻辑扩展到 2D 数组会导致以下有效初始化:
std::array<std::array<int, 3>, 2> a2 { { { {1, 2, 3} }, { { 4, 5, 6} } } };
在此示例中:
以上是如何在 C 中使用大括号正确初始化 2D `std::array`?的详细内容。更多信息请关注PHP中文网其他相关文章!