如何使用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];
}
}
但我想要这样的事情:
int matrix[][sze] = {
{0, 1, 2, 3},
{4, 5, 6, 7},
{8, 9, 10, 11},
{12, 13, 14, 15}
};
答案 0 :(得分: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}
}};
BTW:您的解决方案因brace elision而有效。