map容器迭代器使用erase會使當前迭代器失效,但erase函式會返回下乙個迭代器。
通常我們使用迭代器遍歷map時會使用類似以下形式`
for
(auto i=map.
begin()
;i!=map.
end(
);i++
)
一般情況下自然是沒有問題的,但當你在其中使用erase刪除某個元素時就會出問題了。
即便是
for
(auto i=map.
begin()
;i!=map.
end(
);i++
)
包含了刪除自減也會出問題,那就是當i同時為map.end()與map.begin()時,即資料全被你刪完了。當你使用i–會直接報錯,當你刪除i–時編譯器不會報錯,但卻會一直阻塞在i++這個語句,非常之坑。 map的迭代器
iterator iter map.entryset iterator map的迭代器,用作遍歷map中的每乙個鍵值對 iterator是迭代器,map之前應該定義過,姑且認為是hashmap。表示map中的鍵值對都是string型別的。map.entryset 是把hashmap型別的資料轉換成集...
Map介面和迭代器
使用iterator迭代器的缺點 1.listiterator有add 方法,可以向list中新增物件,而iterator不能 2.listiterator和iterator都有hasnext 方法,可以實現順序向後遍歷,但是 listiteator裡面有hasprevious 和previous ...
map迭代器的基本用法
stl官方描述太過複雜,總結有以下幾種用法 begin 返回指向map頭部的迭代器 clear 刪除所有元素 count 返回指定元素出現的次數 empty 如果map為空則返回true end 返回指向map末尾的迭代器 equal range 返回特殊條目的迭代器對 erase 刪除乙個元素 f...