Posted on 2012-07-05 10:22
點(diǎn)點(diǎn)滴滴 閱讀(351)
評論(0) 編輯 收藏 引用 所屬分類:
02 編程語言
STL中的容器按存儲方式分為兩類,一類是按以數(shù)組形式存儲的容器(如:vector 、deque);另一類是以不連續(xù)的節(jié)點(diǎn)形式存儲的容器(如:list、set、map)。在使用erase方法來刪除元素時(shí),需要注意一些問題。
在使用 list、set 或 map遍歷刪除某些元素時(shí)可以這樣使用:
或
下面是兩個(gè)錯(cuò)誤的使用方法:
或
正確使用方法1:通過erase方法的返回值來獲取下一個(gè)元素的位置
正確使用方法2:在調(diào)用erase方法之前先使用 “++”來獲取下一個(gè)元素的位置
錯(cuò)誤使用方法1:在調(diào)用erase方法之后使用“++”來獲取下一個(gè)元素的位置,由于在調(diào)用erase方法以后,該元素的位置已經(jīng)被刪除,如果在根據(jù)這個(gè)舊的位置來獲取下一個(gè)位置,則會出現(xiàn)異常。
錯(cuò)誤使用方法2:同上。
這里“++”運(yùn)算符與我們平常的理解剛好相反,erase( itList++) 是先獲取下一個(gè)元素的位置在刪除; erase( ++itList) 是刪除以后再獲取下一個(gè)元素的位置。
在使用 vector、deque遍歷刪除元素時(shí),也可以通過erase的返回值來獲取下一個(gè)元素的位置:
注意:vector、deque 不能像上面的“正確使用方法2”的辦法來遍歷刪除。