C 關於容器Map刪除元素的常見問題

2021-07-05 10:46:55 字數 606 閱讀 9952

先上**塊:

...

mapmapdata;

...for (map::iterator i=mapdata.begin(); i!=mapdata.end(); i++)

} ...

這是乙個很常見的錯誤:i指標在元素被刪除後失效了,回到for語句中與mapdata.end() 進行比較將會發生錯誤。

下面給出乙個正確的刪除方法:

...

mapmapdata;

...for (map

::iterator i=mapdata.begin(); i!=mapdata.end(); i++)

else

} ....

另外,當map中的value為指向堆區的指標時,在刪除之前別忘了先要釋放記憶體:

...

mapmapdata;

...for (map

::iterator i=mapdata.begin(); i!=mapdata.end(); i++)

else

}

c 遍歷map的時候刪除元素

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

關於迴圈遍歷map容器,erase元素的問題

發現跳過了c,這是為什麼?原因 我們假設迭代器有6個位置0,1,2,3,4,5,對應a,b,c,d,e,f,當刪除b後 內容變成了0,1,2,3,4 對應a,c,d,e,f,迭代器位置為2 2的位置對應了d,跳過了c 正確用法 int main else std cout endl for std ...

c 之STL容器刪除元素

如果是容器vector,string,deque,使用erase remove 例如 erase remove 注 因為container沒有remove,container.erase it it為迭代器,std remove 並不是真正的刪除元素 size 大小沒有變化 只是元素的替換 如果用l...