3
我跟着下面的帖子來說明在一些非常量操作之後迭代器是如何工作的。`迭代器`和`元素引用之間的區別`
我有問題要了解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.
謝謝