我有一個相當有趣的問題(無論如何,作爲一個初學者和所有人):在C++中,可以使用push_back()方便地生成一個向量,然後可以簡單地放入一個循環以根據需要增長。問題是,我發現沒有類似的簡單功能來減小尺寸。我真正想要做的是創建一個具有預定義大小的向量,然後假設完全刪除它的後半部分(不僅包含元素,而且還應該減小向量大小)。舉個例子:如何刪除矢量的一系列元素,以改變其大小(C++)?
vector<int> numrange;
for (int i=0; i<=100; ++i) {numrange.push_back(i);}
這對於增長矢量和填充數字是完美的。但這似乎不被允許:
int vectsize=numrange.size();
for (int i=vectsize; i>=(vectsize/2); --i) {numrange.erase(i);}
你看,我想擦除每個高於50的元素,但它不會工作。 「沒有從int到const迭代器的已知轉換」
感謝您的幫助。
看起來你可能需要擦除remove慣用法 – NathanOliver
'numrange.resize(numrange.size ()/ 2);'將調整'numsize'只包含第一個'numrange.size()/ 2'元素,破壞向量中元素的後半部分。 – jaggedSpire
當你說「矢量大小也應該減小」時,你的意思是「減少'sizeize'返回的值」,還是你的意思是「減小'size'和'capacity''返回的值?後者更難(在C++ 98中幾乎不可能,我認爲在更新的版本中有機制)。 –