stl容器遍歷時在迴圈體內刪除元素最容易出錯了,根本原因都是因為迭代器有效性問題,在此記下通用刪除方法,該方法適用於所有含erase成員函式的序列容器:
1 std::vectormyvec;23 std::vector::iterator it =myvec.begin();
4while( it !=myvec.end())
5
容器list有個比較另類的刪除方法,也能得到正確結果,如下**所示:
std::listmylist;std::list
::iterator it =mylist.begin();
while (it !=mylist.end())
安全刪除STL容器元素
stl容器迭代過程中刪除元素技巧 序列容器的erase方法返回值是指向緊接在被刪除元素之後的元素的有效迭代器,可以根據這個返回值來安全刪除元素。vectorc for vector iterator it c.begin it c.end 關聯容器的 erase 方法沒有返回值,被刪除的迭代器失效,...
集合遍歷時刪除和增加元素
大多數時候,遍歷集合元素的時候並不需要對元素進行增加或者刪除操作,但有些時候則需要,比如,如果集合中盛放的元素是社會上所有的人,那麼有人死亡則元素刪除,有人出生則是集合元素的增加。對於這種情況,遍歷不能按照原來那種方式去做了,而且c 中的集合對於這類有增刪動作的遍歷,也不支援foreach迴圈。有三...
rust使用vec在遍歷時刪除元素
rust使用vec在遍歷時刪除元素 需求 工作中有乙個地方需要用到在遍歷時把不符合條件的元素刪除掉,比如乙個vec中是原始資料是vec 1,2,3,3,4,5 然後我要在遍歷中把等於c的元素刪除掉,目的是得到vec 1,2,4,5 由於最開始只知道移除元素用remove方法,所以最開始是這樣寫的 l...