I am confused a bit. What I have learned or been told is that an iterator of a vector becomes invalid if erase is called. But why the code below works. It is compiled using g++ and run in Linux.
#include <vector> #include <iostream> using namespace std; int main() { vector<int> vec; vec.push_back(1); vec.push_back(2); vec.push_back(3); vector<int>::iterator it = vec.begin(); ++it; vector<int>::iterator it2; it2 = vec.erase(it); cout << "it: " << *it << endl; cout << "it2: " << *it2 << endl; } Thanks for any feedbacks!
-D_GLIBCXX_DEBUGand you will be enlightened. hopefully.