2017-06-01 81 views
0

我的代码如下:如何在C++的另一个矩阵的行内存储矩阵?

#define ROWS 3 
#define COLUMNS 3 

int main() 
{ 
    int fields[COLUMNS][ROWS]; 
    int **sudoku[COLUMNS][ROWS]; 
    sudoku[0][0] = fields; 

    return 0; 
} 

我想存储领域内数独,什么为正确的语法? 如何在另一个矩阵的行内存储矩阵?

+0

'INT **'是一个指针数组,而不是2-d阵列。 – Barmar

+1

使用'std :: vector'和智能指针,而不是数组和指针。 – Barmar

+0

实际上,'sudoku'是指向int指针的指针数组的数组。它认为这实际上比'int ****'更复杂(指向指向int指针的指针的指针)。你的代码中需要很多类型定义 - 最好是一些结构。 –

回答

3
int fields[COLUMNS][ROWS]; 
int **sudoku[COLUMNS][ROWS]; 
sudoku[0][0] = (int**)fields; 

或者可以使用std ::阵列

using Fields = array<array<int, ROWS>, COLUMNS>; 
Fields fields; 
array<array<Fields, ROWS>, COLUMNS> sudoku; 
sudoku[0][0] = fields; // this will copy the data 
+0

加1为'std :: array'解决方案。 –

+1

谢谢!你会推荐使用static_cast (fields)而不是C cast吗? –

+0

带有转换的版本允许赋值,但仍然无法使用该指针访问数组元素,因为它希望'sudoku [0] [0]'是指向指针的指针,而不是指针到一个数组。 – Barmar

相关问题