首页  >  文章  >  后端开发  >  为什么我不能在 C 中对 2D `std::array` 使用简单大括号初始化?

为什么我不能在 C 中对 2D `std::array` 使用简单大括号初始化?

Linda Hamilton
Linda Hamilton原创
2024-11-21 11:51:11438浏览

Why Can't I Use Simple Brace Initialization for 2D `std::array`s in C  ?

为什么 2D std::array 无法进行大括号初始化?

在 C 中,您可以使用 std::array 定义一个简单的 2D 数组,如示例:

std::array<std::array<int, 3>, 2> a = {
    {1, 2, 3},
    {4, 5, 6}
};

但是,此初始化失败并出现编译器错误,指出初始化程序太多。造成这种差异的原因在于 std::array 。是封装 C 样式数组的聚合类。

为了正确初始化,C 类及其包含的 C 数组需要单独的大括号:

std::array<std::array<int, 3>, 2> a = { {{{1, 2, 3}}, {{4, 5, 6}}} };

在此更正的代码中:

  • 最外层的大括号初始化 std::array 类。
  • 嵌套的大括号初始化类中的 C 风格数组。

通过匹配 C 和 C 语法之间的大括号结构,您可以在 C 中使用大括号初始化成功初始化多维数组。

以上是为什么我不能在 C 中对 2D `std::array` 使用简单大括号初始化?的详细内容。更多信息请关注PHP中文网其他相关文章!

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