map 迭代器無限時間阻塞

2021-10-20 16:32:54 字數 469 閱讀 4610

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...