安全刪除STL容器元素

2021-07-04 12:24:35 字數 586 閱讀 3212

stl容器迭代過程中刪除元素技巧***

序列容器的erase方法返回值是指向緊接在被刪除元素之後的元素的有效迭代器,可以根據這個返回值來安全刪除元素。

vectorc;

for(vector::iterator it = c.begin(); it != c.end();)

關聯容器的

erase

方法沒有返回值,被刪除的迭代器失效,所以刪除前必須確保能得到下乙個迭代器,可以用

「後置遞增迭代器

」技術。

mapm;

for(map::iterator it = m.begin(); it != m.end();)

m.erase

得到it

的乙個副本,在

erase

真正開始之前

it已經遞增了。

所以erase

得到了當前的迭代器,在

erase

內部工作開始之前

it已經

++了,正好滿足我們的需要。

只所以單獨列出來是因為以上兩種方法對

list

都適用,可依自己喜好選擇。

stl容器迴圈刪除元素總結

程式中有一段 是關於stl迴圈刪除的內容,大體邏輯如下 實際邏輯要複雜的多,不適合用std remove系列函式 int main int argc,char argv auto it vec vec.begin while it vec vec.end it vec return 0 儘管平常都是...

STL容器刪除元素的陷阱

今天看scott meyers大師的stl的用法,看到了我前段時間犯的乙個錯誤,發現我寫的 和他提到錯誤 幾乎一模一樣,有關stl容器刪除元素的問題,錯誤的 如下 std vectormfriendlist std vector iterator iter mfriendlist.begin for...

STL容器遍歷時刪除元素

stl容器遍歷時在迴圈體內刪除元素最容易出錯了,根本原因都是因為迭代器有效性問題,在此記下通用刪除方法,該方法適用於所有含erase成員函式的序列容器 1 std vectormyvec 23 std vector iterator it myvec.begin 4while it myvec.en...