#include<vector>
#include<iostream>
using namespace std;
int main(){
vector<int> zeros(1000, 0);
zeros.reserve(1200);
cout << zeros.capacity() << endl;
cout << &zeros << " "<< &zeros[0] << endl;
auto iter = zeros.begin();
cout << (*iter) << " " << &iter << endl;
zeros.insert(zeros.begin(), 1);
cout << (*iter) << " " << &iter << endl;
cout << &(*zeros.begin()) << endl;
return 0;
}
#include<vector>
#include<iostream>
using namespace std;
int main(){
vector<int> zeros(1000, 0);
cout << zeros.capacity() << endl;
cout << &zeros << " "<< &zeros[0] << endl;
auto iter = zeros.begin();
cout << &(*iter) << " " << &iter << endl;
zeros.insert(zeros.begin(), 1);
cout << &(*iter) << " " << &iter << endl;
cout << &(*zeros.begin()) << endl;
return 0;
}
前一段代码迭代器没有失效,后一段代码迭代器失效,后一段insert后vector进行了移动,迭代器失效,理解迭代器,关键要认识到迭代器也是一种特殊的指针(说法不甚严谨),它所指的内存到底发生了什么变化。这也需要对容器有相应地理解。