这个对象指向vector的内部元素(元素又是迭代器的对象),所以当迭代器指向的元素被删除或者移动,迭代器与元素就断开链接,迭代器也就没有用了,也就是我们通常说的迭代器失效。迭代器的行为类似指针,但是又有所区别。 反观指针,指针与内存是联系在一起的。如果指针指向的内存地址存储的元素被删除或者移动,指针并不会因...
《C++ Primer》中说删除vector元素会让删除点后的迭代器失效。 #include <vector> #include <iostream> using std::cout; using std::vector; int main() { vector<int> vs1{1,2,3,4,5}; auto it1 = vs1.begin(); auto it2 = it1 + 2; auto it3 = vs1.end() - 1; cout << *it1 <...
解引用失效的迭代器是UB,拿到那个5不代表迭代器没失效。以及这个例子里,因为int是可平凡析构的,可能...