c 遍歷map的時候刪除元素

2021-06-12 00:15:07 字數 805 閱讀 5256

在c++程式設計的時候,我們有時會遇到,在遍歷map的時候,刪除符合某個條件的元素,如果我們不做任何處理,直接刪除map元素的話,程式會異常終端,提示"expression: map/set iterator not incrementable"。所以如果想在遍歷map的時候刪除元素,必須做一些處理,下面給出一種方法.

#include #include using namespace std;

int main()

int count = 0;

// delete the element

for( std::map::iterator iter = test_map.begin();

iter != test_map.end(); )

else iter ++;

count ++;

}cout << "use count:" << count << endl;

cout << "after delete " << endl;

for( std::map::iterator iter = test_map.begin();

iter != test_map.end(); ++ iter)

system("pause");

return 0;

}

執行結果

1 12 2

3 34 4

use count:4

after delete

1 13 3

遍歷所需次數,也就是整個map的總元素個數,不會增加額外的次數

map刪除元素

1.刪除指定的key map iterator iter m.find 1 m.erase iter 上述例子的map是任意給定的,我們指定刪除mapm中 鍵值為1的資料 測試結果m的size減一 上完整測試 include include using namespace std int main ...

map刪除元素

map刪除指定元素 1.hashmap 類對映不保證順序 某些對映可明確保證其順序 treemap 類 2.在遍歷map過程中,不能用map.put key,newval map.remove key 來修改和刪除元素,會引發 併發修改異常,可以通過迭代器的remove 從迭代器指向的 collec...

如何在map遍歷的時候刪除符合條件的選項

工作了,使用stl的次數變得很多,我是新手,雖然努力的看過stl的原始碼,但是很多的東西都沒有看懂,慢慢來吧。昨天做專案的時候遇到了map遍歷的事情查了一下便了解的記錄下來。這個刪除有兩種方法 1,std map iterator iter for iter m friendinfomap.begi...