STL vector中的元素刪除

2021-06-16 14:02:15 字數 757 閱讀 6982

刪除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所佔的空間就被釋放掉了

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