STL中的容器按存儲(chǔ)方式分為兩類,,一類是按以數(shù)組形式存儲(chǔ)的容器(如:vector 、deque); 另一類是以不連續(xù)的節(jié)點(diǎn)形式存儲(chǔ)的容器(如:list,、set、map)。在使用erase方法來刪除元素時(shí),,需要注意一些問題,以避免引起不可預(yù)知錯(cuò)誤或崩潰,。
在使用 list,、set 或 map遍歷刪除某些元素時(shí)可以這樣使用 std::list< int> List; std::list< int>::iterator itList; for( itList = List.begin(); itList != List.end(); ) { if( FIND( *itList) ) { List.erase( itList++); } else itList++; }
在使用 vector、deque遍歷刪除元素時(shí),,也可以通過erase的返回值來獲取下一個(gè)元素的位置: std::vector< int> Vec; std::vector< int>::iterator itVec; for( itVec = Vec.begin(); itVec != Vec.end(); ) { if( FIND( *itVec) ) { itVec = Vec.erase( itVec); } else itList++; }
以上為遍歷容器時(shí)刪除特定元素的推薦用法,在單獨(dú)刪除某一元素的時(shí)候沒有要求,。
|