刪除vector中的元素,最容易的方法就是使用vector的erase()函式。
vector vec;
for ( vector::iterator iter = vec.begin(); iter! = vec.end();)
如果要清空vector中的元素,可以使用erase()迴圈刪除,也可以用clear()函式。
for ( vector::iterator iter = vec.begin(); iter! = vec.end();)
//或者直接clear
vec.clear();
需要注意,
如果vector中儲存的元素是指標
,那麼erase()或者clear()
並不會刪除指標指向的物件或者記憶體空間
,要小心記憶體洩漏問題。
此外,還需要注意的是,erase()函式雖然會刪除指定位置的元素,但是
元素所占用的記憶體空間並不會被釋放掉
,也就是說,被刪除的元素所佔的記憶體空間還是被vector占有的,而
沒有被系統**
。要解決這個問題可以
使用vector中的swap()函式
。假設vector vec起初有1000個元素,後來刪掉500個,那麼要釋放掉那500個int所佔的空間,可以這樣:
std::vector(vec).swap(vec);
//上面這行**相當於下面兩行
//即先產生乙個跟vec中
現有內容
相同且占用空間剛好滿足其大小的vector tmp
//然後把tmp與vec對換
//當出了
tmp的作用域(例如下面的一對大括號)後,tmp所佔的空間就被釋放掉了
如果要將vector vec的空間全部刪掉,可以這樣:
STL vector中的元素刪除
刪除vector中的元素,最容易的方法就是使用vector的erase 函式。vector vec for vector iterator iter vec.begin iter vec.end 如果要清空vector中的元素,可以使用erase 迴圈刪除,也可以用clear 函式。for vect...
STL vector刪除重複元素
stl提供了很多實用的演算法,這裡主要講解sort和unique演算法。刪除重複元素,首先將vector排序。sort vecsrc.begin vecsrc.end 然後使用unique演算法。vecsrc.erase unique vecsrc.begin vecsrc.end vecsrc.e...
STL vector刪除重複元素
stl提供了很多實用的演算法,這裡主要講解sort和unique演算法。刪除重複元素,首先將vector排序。sort vecsrc.begin vecsrc.end 然後使用unique演算法。vecsrc.erase unique vecsrc.begin vecsrc.end vecsrc.e...