STL容器遍歷時刪除元素

2022-03-11 17:56:28 字數 387 閱讀 6297

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