具有数组类错误的多维数组:初始化程序太多

Win*_*ws7 2 c++ arrays multidimensional-array

当我尝试声明一个多维数组时:

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} };
Run Code Online (Sandbox Code Playgroud)

我明白了:

|10|error: too many initializers for 'std::array<std::array<int, 7u>, 5u>'
Run Code Online (Sandbox Code Playgroud)

但是当我对标准[]数组做同样的事情时:

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} };
Run Code Online (Sandbox Code Playgroud)

我没有错.我在Windows 7 x64上使用mingw g ++.我是c ++和stackoverflow的新手,感谢您的耐心等待.

πάν*_*ῥεῖ 6

初始化std::array与原始数组略有不同.std::array需要看到聚合初始化.

您必须添加额外的括号,初始化值可以推导到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} 
        }
     // ^
    };    
}
Run Code Online (Sandbox Code Playgroud)

看到 Live Demo