2017-03-13 2 views
0

私はC++にはとても新しく、現在これを勉強しています。皆さんは最初の通話先です。C++ Sudokouグリッドの初期化

基本的にオブジェクトの2次元配列であるものを作成する必要があります。ヘッダーファイルには、行、列、およびブロック用のCellオブジェクトが含まれています。 9x9の配列のオブジェクトを持ち、列、行、内部の3x3ブロックに基づいて関連するポインタを持っているという考え。私が固執しているのは、以下の行が9x9を満たしていますが、どのように各セルを指しているのでしょうか?

これは別のもので、これは私がそのグリッドを設定するために必要なものですか?

void SudokuPuzzle::InitialiseGrid() 
{ 
    for (int row = 0; row < 9; row++) 
    { 
     for (int column = 0; column < 9; column++) 
     { 
      m_gridRows[row].SetCell(column, new SudokuSquare()); 

      // have the cell point to both it's position in the column and block 
     } 
    } 
} 
+0

で任意のオブジェクトをアクセスもできますが、あなたがすべてでポインタを使用する必要があります確信していますか?私にとっては不必要なようですが、あなたが心を込めているなら、クリーンアップするか、より良い形で 'std :: unique_ptr '型を使うのを忘れないでください。 – George

答えて

0

ご使用のアレイが固定サイズの場合。 3x3のは、ちょうどstd::arrayを使用します。

#include <array> 
using std::array; 

int main() 
{ 
    array<array<int, 3>, 3> sudoku_squares{}; 

    sudoku_squares[0][1] = 1; // sets cell at first row, second column to 1 

    return 0; 
} 

あなたのケースでは、あなたが別の配列にこれらの3×3アレイの9を保存するか、単に9x9の配列を使用して、任意のポインタを使用する必要はありませんすることができます。私の例ではintを使用しましたが、正確に同じ方法でSudokuSquareを保存することができます。

1

タイプ "SudokuSquare"の2次元配列を作成しようとしたかもしれません。

SudokuSquare sSquare [9][9]; 

ですから、

sSquare[row][column];