2012-11-07 34 views
-4

可能重複:
Iterator invalidation rules操作後迭代器可能無效嗎?

想象一下,我有一個map<int, int>。不知何故,我檢索了一個指向地圖中的條目pair<35,37>的迭代器。我將這個迭代器保存爲map<int, int>::iterator _my_iterator3537

之後,我做了很多插入到地圖。 _my_iterator3537仍然指向pair<35,37>

+5

你三年來一直在這裏,問了35個問題,但人們仍然需要在你的文章中編輯基本格式。不是很好!請從現在開始做吧! –

+0

要了解@Lightness(以及其他人)如何做出那種奇特的格式化,請在編輯它們之後單擊您自己的某個帖子上的編輯。 – Yakk

+0

或者點擊您寫下問題的框旁邊的大'?'來閱讀非常全面的Stack Overflow格式文檔。大寫字母不完全是「幻想」。 –

回答

3

從文檔:

地圖有插入新元素到地圖並不能否定指向現有元素的迭代器的重要屬性。

擦除地圖中的元素也不會使任何迭代器無效,當然,除了實際指向正在被擦除的元素的迭代器。

從標準:23.1.2/8

插入構件不應影響迭代器和引用到容器的有效性,並且擦除成員應僅無效迭代器和引用擦除元件。