私のクラスGameBoard
には、クラスTile
のオブジェクトの2Dベクトルであるメンバー変数があります。 GameBoard
コンストラクターは、幅と高さをパラメーターとして受け取ります。
コンストラクタに渡された幅と高さに応じて、Tile
オブジェクトの2Dベクトルのサイズを変更するにはどうすればよいですか?どのようにしてTile
オブジェクトで埋めて、次のようなことができるようになりますか?
myVector[i][j].getDisplayChar();
スニペット
m_vvTiles.resize(iHeight);
for(auto it = m_vvTiles.begin(); it != m_vvTiles.end(); it++ ){
(*it).resize(iWidth,Tile(' '));
}
外部ベクトルと内部ベクトルを別々にサイズ変更する必要があります。
myVector.resize(n);
for (int i = 0; i < n; ++i)
myVector[i].resize(m);
2次元ベクトル(行列)のサイズを変更するために外部ループを作成する必要はありません。次の1行のresize()
呼び出しを実行するだけです。
//vector<vector<int>> M;
//int m = number of rows, n = number of columns;
M.resize(m, vector<int>(n));
お役に立てば幸いです。
また、1行のコードを使用することもできます。
matrix.resize( row_count , vector<int>( column_count , initialization_value ) );
コードが繰り返し次元を変更し、行列が時々縮小している場合も、サイズを変更する前に、行列の古い状態をクリアします(2Dベクトル)
matrix.clear();
matrix.resize( row_count , vector<int>( column_count , initialization_value ) );
// we can create a 2D integer vector with 3 rows and 5 columns having "-1" as initial value by:
matrix.clear();
matrix.resize(3, vector<int> (5,-1));