我关注了以下帖子,该帖子说明了迭代器在一些非常量操作之后的行为方式。
reference
我很难理解和之间的区别iterator
。以下是作为说明示例列出的规则之一:
双端队列:所有迭代器和引用都无效,除非插入的成员位于双端队列的末端(前面或后面)(在这种情况下,所有迭代器都无效,但对元素的引用不受影响)[23.2.1.3/1]
这是基于参考的示例代码。
std::deque<int> mydeque;
mydeque.push_back(1);
mydeque.push_back(2);
mydeque.push_back(3);
const int& int3 = mydeque.back(); // reference to 3
int& int3 = mydeque.back();
std::deque<int>::iterator itBack = mydeque.crbegin(); // pointing to 3
mydeque.push_back(4);
问题> 如果我的模糊理解是正确的,那么下面的说法是正确的:
After the calling of the line of `mydeque.push_back(4)`
`int3` is still valid because it is a reference to element.
`itBack` is invalidated because it is an iterator.
谢谢