当我尝试用:
声明多维数组时<value>
我明白了:
array<array<int, 7>, 5> arrayOne = {
{1, 5, 8, 0, 0, 0, 0},
{2, 3, 8, 7, 7, 0, 0},
{3, 4, 8, 2, 9, 0, 0},
{4, 8, 7, 1, 4, 0, 0},
{5, 7, 6, 8, 3, 0, 0} };
但是当我对标准[]数组做同样的事情时:
|10|error: too many initializers for 'std::array<std::array<int, 7u>, 5u>'
我没有错误。我在Windows 7 x64上使用mingw g ++。我是c ++和stackoverflow的新手,感谢您的耐心等待。
答案 0 :(得分:6)
初始化std::array
与原始数组略有不同。 std::array
需要查看aggregate initialization。
您必须添加额外的括号,将初始值设定值推导到std::initializer_list
:
#include <array>
int main()
{
std::array<std::array<int, 7>, 5> arrayOne = {
{
// ^
{1, 5, 8, 0, 0, 0, 0},
{2, 3, 8, 7, 7, 0, 0},
{3, 4, 8, 2, 9, 0, 0},
{4, 8, 7, 1, 4, 0, 0},
{5, 7, 6, 8, 3, 0, 0}
}
// ^
};
}
请参阅Live Demo