首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++11中的过端迭代器失效

C++11中的过端迭代器失效
EN

Stack Overflow用户
提问于 2012-07-06 02:35:38
回答 3查看 2.8K关注 0票数 26

C++ Iterator invalidation rules上最受欢迎的帖子声称,不清楚过去-结束迭代器(即,由end()cend()rend()crend()返回的迭代器)是否根据与指向容器中元素的常规迭代器相同的规则无效。这些声明都是针对2003年和2011年的C++做出的,遵循了一篇讨论End iterator invalidation rules的文章,其中被接受的答案表明2003年的标准在这个问题上是模棱两可的。这个结论基于23.1/10 (在swap()的上下文中)中的一条评论,该评论似乎暗示,当规范没有明确提到过期迭代器的无效时,它们可能会失效。

对该帖子的问题(由mike-seymour提出)的评论表明,在deques的情况下,C++11在这个问题上是明确的。我的问题是关于所有容器:

  • 在C++11中,是否有任何容器操作可能会使经过-结束的迭代器无效,并且这种行为在语言规范中是不明确的?

换句话说,

在执行容器操作后,我是否可以信任过期迭代器的有效性?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11350454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档