【问题标题】:Can iterators become invalid after operations? [duplicate]操作后迭代器会失效吗? [复制]
【发布时间】:2012-11-07 20:57:58
【问题描述】:

可能重复:
Iterator invalidation rules

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

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

【问题讨论】:

  • 您已经在这里待了将近三年,问了 35 个问题,但人们仍然不得不在您的帖子中编辑基本格式。情况不妙!从现在开始请自己做!
  • 要了解@Lightness(和其他人)如何进行这种精美的格式设置,请在他们编辑后点击您自己的帖子之一。
  • 或单击您写问题的框旁边的大号 ? 以阅读非常详尽的 Stack Overflow 格式化文档。大写字母并不完全“花哨”。

标签: c++ map std


【解决方案1】:

来自文档:

Map 具有一个重要的属性,即向地图中插入新元素不会使指向现有元素的迭代器失效。

从映射中删除元素也不会使任何迭代器无效,当然,实际上指向被删除元素的迭代器除外。

从标准:23.1.2/8

插入成员不会影响迭代器和对容器的引用的有效性,而擦除成员只会使迭代器和对被擦除元素的引用无效。

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 2022-12-31
    • 2017-07-05
    • 1970-01-01
    • 2010-11-07
    • 2015-07-31
    相关资源
    最近更新 更多