18

我的类GameBoard有一个成员变量,它是类对象的二维向量Tile。构造GameBoard函数将宽度和高度作为参数。

如何Tile根据传递给构造函数的宽度和高度来调整对象的二维向量?我怎样才能用Tile对象填充它,以便我可以做这样的事情?

myVector[i][j].getDisplayChar();

片段

m_vvTiles.resize(iHeight);

for(auto it = m_vvTiles.begin(); it != m_vvTiles.end(); it++ ){

    (*it).resize(iWidth,Tile(' '));
}
4

4 回答 4

47

您不需要创建外部循环来调整二维向量(矩阵)的大小。您可以简单地执行以下一行resize()调用:

//vector<vector<int>> M;
//int m = number of rows, n = number of columns;
M.resize(m, vector<int>(n));

希望有帮助!

于 2017-05-30T20:03:20.527 回答
33

您必须分别调整外部和内部向量的大小。

myVector.resize(n);
for (int i = 0; i < n; ++i)
    myVector[i].resize(m);
于 2013-04-08T21:52:28.937 回答
13

我们也可以使用单行代码:

matrix.resize( row_count , vector<int>( column_count , initialization_value ) );

如果代码反复改变尺寸并且矩阵有时也在缩小,那么在重新调整大小之前清除矩阵的旧状态(二维向量)

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));
于 2014-09-23T23:52:47.950 回答
0

最佳做法是使用

vector<vector<int>> matrix;  //creating 2d vector
int r,c;                     
cin>>r>>c;                    //taking input from user 
matrix.resize(r, vector<int>(c));   //resizing 2d vector according to required space only
于 2020-12-22T11:33:03.417 回答