首页 > 后端开发 > C++ > 为什么我不能像常规 2D 数组一样初始化 2D std::array?

为什么我不能像常规 2D 数组一样初始化 2D std::array?

Patricia Arquette
发布: 2024-11-22 06:28:11
原创
495 人浏览过

Why Can't I Initialize a 2D std::array Like a Regular 2D Array?

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, 2u>'

理解这个错误的关键在于 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板