操作后迭代器是否会失效?

时间:2012-11-07 20:57:58

标签: c++ map std

  

可能重复:
  Iterator invalidation rules

想象一下,我有map<int, int>。不知何故,我检索了一个指向地图中条目pair<35,37>的迭代器。我将此迭代器保存为map<int, int>::iterator _my_iterator3537

之后,我在地图上做了很多插入。 _my_iterator3537是否仍然指向pair<35,37>

1 个答案:

答案 0 :(得分:3)

来自文档:

  

Map具有以下重要特性:将新元素插入到映射中不会使指向现有元素的迭代器无效。

     

从地图中删除元素也不会使任何迭代器无效,当然,除了实际指向正在被删除的元素的迭代器之外。

来自标准:23.1.2 / 8

  

插入成员不应影响迭代器的有效性和对容器的引用,并且擦除成员应仅使迭代器和对已擦除元素的引用无效。