c++ - 数组类错误 : too many initializers 的多维数组

标签 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} };

我得到:

|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/

相关文章:

c++ - 帮助ifstream进行编程测试

c++ - 基于范围的语句定义冗余

arrays - Sumproduct公式返回#VALUE!当最后一个数组引用每行中都有公式的列时发生错误。 MS Excel 2010

c - 打印具有附加行和列的多维数组

php - 包含动态子数组的数组;只捕获最后一个子数组

php - 如何显示具有相同ID的多维数组(PHP,Laravel)

c++ - 是否可以引用从 end() 中减去的 std::vector 的一部分

c++ - 不同的 constexpr 行为 vs2015u2 vs gcc

javascript - 这是什么: js?

java - 无法在 Java 中创建...的通用数组