#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進行了移動,迭代器失效,理解迭代器,關鍵要認識到迭代器也是一種特殊的指針(說法不甚嚴謹),它所指的內存到底發生了什麼變化。這也需要對容器有相應地理解。