我的代码带有"矩阵"格式为:
vector < vector<int> > matrix
;
我不知道她的尺寸:用户将通过cin
输入。我想做这样的事情:
vector<int> row;
while (userInputting)
{
row.push_back(userInput);
if (rowIsReady)
{
// puts the row in the matrix and allocates a new row to be filled
matrix.push_back(row);
**row = new vector<int>();**
}
}
但是,突出显示的行的预期操作非常困难,这在其他语言中通常很简单。我怎么能这样做或类似的东西填补我的矩阵?
答案 0 :(得分:1)
您无需分配新内存来编写新行。调用matrix.push_back
时,其参数是行的副本,而不是行本身。因此,如果您稍后更改row
变量,则矩阵的内容不会更改。
答案 1 :(得分:1)
调用clear
成员函数或resize( 0 )
,再次将其调整为0。
然后你可以使用shrink_to_fit
(在C ++ 11及更高版本中)很好地尝试放弃当前的缓冲区,但在你绘制的代码中,这只会导致效率低下,即不必要的动态分配。 / p>
另一种方法是分配一个emtpy向量,例如row = vector<int>()
,但这通常与shrink_to_fit
具有相同的效果,即当必须再次增加缓冲区大小时,您将获得不必要的动态分配。