相关疑难解决方法(0)

迭代器失效规则

C++容器的迭代器失效规则是什么?

优选地以摘要列表格式.

(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)

c++ iterator c++-faq c++11 c++17

509
推荐指数
6
解决办法
11万
查看次数

C++ 11中的过去迭代器失效

上C++最流行的交迭代器失效规则声称,目前还不清楚,如果在过去的最端迭代器(即,那些由返回end(),cend(),rend(),和crend())根据相同的规则正常迭代器,这点在元件被无效容器.这些针对2003和2011 C++的声明,推迟到讨论End迭代器失效规则的帖子,其中接受的答案表明2003标准在这个问题上是模棱两可的.这一结论是基于23.1/10评论(在的情况下swap(),这似乎暗示,当规范没有明确提及过去的最末端迭代器失效,他们可能会失效).

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

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

换句话说,

  • 在执行容器操作之后,我是否可以信任过去的迭代器的有效性,而不会说它可能使过去的迭代器无效?

c++ iterator

22
推荐指数
1
解决办法
2322
查看次数

标签 统计

c++ ×2

iterator ×2

c++-faq ×1

c++11 ×1

c++17 ×1