c++ - 在 C++ 中使用动态多维数组

标签 c++ multidimensional-array

我正在制作一个 C++ 程序来检查给定的数组是否为 latin square .我需要使用存储给定拉丁方的动态多维数组。但我无法将数组传递给执行检查的函数...

目前我有这样的函数调用代码:

int squaretest(int **p, int n, int sum) {

    //some code
};

这段代码用于创建数组:

int main() { 

    //some code. n - length of one row, sum - sum of elements in one row.
    int a;  
    int **lsquare;
    lsquare = new int*[n];
    for (int i=0;i<=n-1;i++) for (int j=0;j<=n-1;j++) {
        cin >>a;
        lsquare[i][j] = a;
    }
    blocktest(lsquare,n,sum);
    //some code
};

代码可以编译(我使用的是 Geany IDE 和 G++ 编译器)但是当我在终端中运行它时,在第一次输入之后,它必须存储在 block[0][0] 中,我得到 Segmentation fault 错误。我的代码有什么问题,正确的解决方案是什么?

最佳答案

为了能够做到这一点......你实际上需要这样做:

int **lsquare = new int*[n];

for (int i=0; i<n; ++i)
    lquare[i] = new int[n];

for (int i=0; i<n; i++)
    for (int j=0; j<n; j++)
        cin >> lsquare[i][j];

blocktest(lsquare,n,sum);

更好的系统是:

int *lsquare = new int[n*n];

for (int i=0; i<n; ++i)
    for (int j=0; j<n; ++j)
        cin >> lsquare[i + j*n];

blocktest(lsquare, n, sum);

关于c++ - 在 C++ 中使用动态多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1471721/

相关文章:

c++ - 显式模板特化的语法

c++ - 我需要帮助为这个 vector 类制作一个插入函数

javascript - 无法访问数组

c++ - 使用指针的二维数组的非访问冲突

c++ - 在 C++ 代码中使用 new/delete 而不是 malloc/free 时崩溃

c++ - 我怎样才能找到从a[x][y]到任何a[v][w]的最短路径?

c++ - 在C++中查找像素RGB数据的最快方法是什么?

javascript - 展平 JavaScript 二维数组是否值得任何性能提升?

arrays - var array [rows] [columns] int在Go中将维度分配给数组

python - Numpy 一维数组 CumSquare 值