c map 迭代器刪除示例

2021-07-04 02:52:38 字數 453 閱讀 2811

c++ stl中的map是非常常見的。通常我們用如下方式來遍歷,並且刪除map中的一些entry:

map

mp;

mp.insert(make_pair(1,1));

mp.insert(make_pair(2,3)); // insert some elements

for (map

::iterator iter = mp.begin(); iter != mp.end(); iter++)

for (map

::iterator iter = mp.begin(); iter != mp.end(); )

這裡的刪除時安全的,因為iter在刪除前已經會先進行快取一下,再傳給erase去刪除。因此 iter++ 是在原先的 iter 基礎上進行的。這種方式也是 c++ 文件中推薦的方式。

C map容器迭代刪除的相關問題

昨天 面試碰到一道面試題,對於map mapma p容器找到特定的value的元素並刪除它,當第一次刪除之後迭代器ite rato riterator iterat or可能會失效,如何讓迭代可以繼續下去。下面看具體的例子 int main for map int,string iterator i...

STL刪除迭代器

1.關聯容器刪除乙個迭代器對其他迭代器不會造成影響,返回的是void型。2.序列容器刪除乙個迭代器後會造成後面的所有迭代器都往前移動乙個位置,因此先前儲存的迭代器都會失效,返回的是被刪除後新複製到被刪除位置的元素的迭代器。c 中利用迭代器刪除元素會發生什麼?1 對於關聯容器 如map,set,mul...

迭代器的刪除問題

it m ballactionsmgr.begin for it m ballactionsmgr.end it 這樣刪除是正確的 it m ballactionsmgr.begin for it m ballactionsmgr.end it 這樣刪除有問題,刪除迭代器以後,迭代器又加了1,所以刪...