C++容器的迭代器失效规则是什么?
优选地以摘要列表格式.
(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)
上C++最流行的交迭代器失效规则声称,目前还不清楚,如果在过去的最端迭代器(即,那些由返回end(),cend(),rend(),和crend())根据相同的规则正常迭代器,这点在元件被无效容器.这些针对2003和2011 C++的声明,推迟到讨论End迭代器失效规则的帖子,其中接受的答案表明2003标准在这个问题上是模棱两可的.这一结论是基于23.1/10评论(在的情况下swap(),这似乎暗示,当规范没有明确提及过去的最末端迭代器失效,他们可能会失效).
对该帖子的问题的评论(由mike-seymour提出)表明C++ 11在这个问题上是明确的,在deques 的情况下.我的问题是关于所有容器:
换句话说,