当我尝试声明一个多维数组时:
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>'
但是当我对标准 [] 数组执行相同操作时:
int arrayTwo[5][7]= {
{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} };
我没有收到任何错误。我在 Windows 7 x64 上使用 mingw g++。我是 c++ 和 stackoverflow 的新手,感谢您的耐心等待。
最佳答案
对于初始化 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
关于c++ - 数组类错误 : too many initializers 的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37534541/