STL vector中的元素刪除

2021-07-05 10:35:49 字數 881 閱讀 3459

刪除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...