C++ Iterator invalidation rules上最受欢迎的帖子声称,不清楚过去-结束迭代器(即,由end()
、cend()
、rend()
和crend()
返回的迭代器)是否根据与指向容器中元素的常规迭代器相同的规则无效。这些声明都是针对2003年和2011年的C++做出的,遵循了一篇讨论End iterator invalidation rules的文章,其中被接受的答案表明2003年的标准在这个问题上是模棱两可的。这个结论基于23.1/10 (在swap()
的上下文中)中的一条评论,该评论似乎暗示,当规范没有明确提到过期迭代器的无效时,它们可能会失效。
对该帖子的问题(由mike-seymour提出)的评论表明,在deque
s的情况下,C++11在这个问题上是明确的。我的问题是关于所有容器:
换句话说,
在执行容器操作后,我是否可以信任过期迭代器的有效性?
https://stackoverflow.com/questions/11350454
复制相似问题