C++中2-D std :: array的Braced初始化列表

Joh*_*orn -2 c++ arrays initialization matrix c++11

如何用std::array?初始化数组?我的解决方案是

array<array<int, sze>, sze> arcpp { 0, 1, 2, 3 , 4, 5, 6, 7, 8, 9, 10, 11 ,12, 13, 14, 15 };
for (auto i = 0; i < sze; i++) {
    cout << "\n";
    for (auto j = 0; j < sze; j++) {
        cout << "\t" << arcpp[i][j];
    }
}
Run Code Online (Sandbox Code Playgroud)

但我想要这样的事情:

int matrix[][sze] = {
    {0, 1, 2, 3},
    {4, 5, 6, 7},
    {8, 9, 10, 11},
    {12, 13, 14, 15}
};
Run Code Online (Sandbox Code Playgroud)

son*_*yao 5

std::array 包含一个内部原始数组,

此容器是一种聚合类型,其语义与包含C样式数组T[N]作为其唯一非静态数据成员的结构相同.......作为聚合类型,可以使用最多N个初始化程序给出的聚合初始化来初始化它,这些初始化程序可以转换为T : std::array<int, 3> a = {1,2,3};.

所以你需要添加额外的大括号来聚合初始化内部数组std::array,例如

array<array<int, sze>, sze> arcpp = {{
    {0, 1, 2, 3},
    {4, 5, 6, 7},
    {8, 9, 10, 11},
    {12, 13, 14, 15}
}};
Run Code Online (Sandbox Code Playgroud)

生活

顺便说一句:您的解决方案发挥作用是因为撑省音.