對於序列容器vector, deque來說,使用erase (itertor)後,後邊的每個元素的迭代器都會失效,但是後邊每個元素都會往前移動乙個位置,當前的迭代器指標直接指向了下乙個元素;。
對於關聯容器map set 來說,使用了erase(iterator)後,當前元素的迭代器失效,但是其結構是紅黑樹,刪除當前元素的,不會影響到下乙個元素的迭代器,所以在呼叫erase之前,記錄下乙個 元素的迭代器即可。
對於list來說,它使用了不連續分配的記憶體,並且它的erase方法也會返回下乙個有效的 iterator。
C STL迭代器 插入迭代器
include stdafx.h include include include include include 演算法庫對所有在容器上的操作有個承諾 決不修改容器的大小 不插入 不刪除 有了插入迭代器,既使得演算法庫可以通過迭代器對容器插入新的元素,又不違反這一承諾,即保持了設計上的一致性。usi...
C STL中迭代器失效問題
其實,在我們學習過程中,c stl使我們必須要用的乙個庫,裡面整合了很多的資料結構和演算法,這些在我們寫程式的時候,用的特別多。但是,使用這些,我們經常會出現一些問題,畢竟c 中記憶體的申請和釋放都是程式設計師親自去做的,所以說,在使用stl的時候,我們也會遇到很多問題,其中乙個就是我們所謂的迭代器...
C STL 迭代器失效
2 刪除 當進行刪除操作 erase,pop back 後,指向刪除點的迭代器全部失效 指向刪除點後面的元素的迭代器也將全部失效。刪除點之前的迭代器仍有效。二 deque迭代器的失效情況 1 插入 1 在deque容器首部或者尾部插入元素不會使得任何迭代器失效。但是指向存在的元素的引用和指標不會失效...