c++ - 如何在 C++ 中填充多维数组的一部分?

标签 c++ multidimensional-array

我在尝试填充多维数组 m[4][4][3][3] 时遇到问题。 这些实际上是我已经知道的 16 个 3x3 矩阵,我正在尝试填充它们。这样做的正确方法是什么?我收到一个错误:“16:'{' 标记之前的预期主表达式”

请帮忙。

#include<iostream>
using namespace std;

int main()
{

    int m[4][4][3][3];//0,1,2,3 HLUT

    m[0][0]={1,0,1,
             1,1,1,
             1,0,1};
    m[0][1]={1,1,1,
             0,1,0,
             1,1,1};
    m[0][2]={1,0,1,
             1,1,1,
             1,0,1};
    m[0][3]={1,1,1,
             0,1,0,
             1,1,1};


    m[1][0]={1,0,0,
             1,0,0,
             1,1,1};
    m[1][1]={0,0,1,
             0,0,1,
             1,1,1};
    m[1][2]={1,1,1,
             0,0,1,
             0,0,1};
    m[1][3]={1,1,1,
             1,0,0,
             1,0,0};


    m[2][0]={1,0,1,
             1,0,1,
             1,1,1};
    m[2][1]={1,1,1,
             0,0,1,
             1,1,1};
    m[2][2]={1,1,1,
             1,0,1,
             1,0,1};
    m[2][3]={1,1,1,
             1,0,0,
             1,1,1};


    m[3][0]={1,1,1,
             0,1,0,
             0,1,0};
    m[3][1]={1,0,0,
             1,1,1,
             1,0,0};
    m[3][2]={0,1,0,
             0,1,0,
             1,1,1};
    m[3][3]={0,0,1,
             1,1,1,
             0,0,1};

}                   

最佳答案

你不能像那样初始化一个多维数组。如果你想这样做,请这样做:

#include<iostream>
using namespace std;

int main()
{

    int m[4][4][3][3] = {1,0,1, //1
             1,1,1,
             1,0,1,

             1,1,1,     //2
             0,1,0,
             1,1,1,

             1,0,1,     //3
             1,1,1,
             1,0,1,

            // ...
            // ...

             1,0,1,     //16
             1,1,1,
             1,0,1};


    for(int i=0;i<4;++i)
        for(int j=0;j<4;++j) {
            for(int p=0;p<3;++p) {
                for(int q=0;q<3;++q)
                    std::cout<<m[i][j][p][q];
                std::cout<<std::endl;
            }
            std::cout<<std::endl;
        }
}

或者使用 4 个 for 循环来分配你的数组。您必须始终记住,多维数组只不过是内存中的一维数组,因此将其初始化为一维数组。

关于c++ - 如何在 C++ 中填充多维数组的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33886291/

相关文章:

java - 在Java中打印二维数组(通过split生成)

c++ - QListWidget::setEditTriggers(QAbstractItemView::AnyKeyPressed) 不工作

c++ - STL random_sample 以递减的概率替换

c++ - 如何在 C++ 和 Lua 之间共享数据?

c++ - C++中的组合数(N选R)

java - 更改矩形二维数组中的值

c++ - 这个锁的内存屏障是否正确?

javascript - 如何从普通数组创建多维数组

c++ - 高性能 C++ 多维数组

multidimensional-array - 如何从 View 中有效地克隆 Rust ndarray?