首页  >  文章  >  后端开发  >  如何在 C 中使用大括号正确初始化 2D `std::array`?

如何在 C 中使用大括号正确初始化 2D `std::array`?

Linda Hamilton
Linda Hamilton原创
2024-11-24 06:22:24950浏览

How to Correctly Initialize a 2D `std::array` in C   Using Braces?

使用大括号初始化 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} } } };

在此示例中:

  • "{ { {1, 2, 3} }, { { 4, 5, 6} } }" 是类大括号,包含二维数组的初始化。
  • "{{1, 2, 3}, {4, 5, 6}}" 是内部 C 样式数组的大括号,初始化 2D 数组的每一行。

以上是如何在 C 中使用大括号正确初始化 2D `std::array`?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn