2017-06-01 38 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