簡體   English   中英

迭代時擦除std :: map的其他元素

[英]Erase other elements of std::map while iterating

我有一個包含以下鍵值對的地圖。 {(a,P),(b,Q),(c,R),(d,S),...(g,Z)}

我正在迭代此地圖,並且在每個元素處我都取得了一個分支,該分支訪問相同的地圖,並在滿足條件時擦除該地圖的元素。 簡而言之,當主迭代器位於(bQ)時,分支功能可能會擦除(d,S)。

這有效嗎? 還是這段錯誤?

您需要閱讀迭代器失效規則:

std :: map :: erase

對已刪除元素的引用和迭代器無效。 其他引用和迭代器不受影響。

因此,只要您不在擦除的地方使用迭代器,就可以了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM