1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <vector> using namespace std; int main() { vector<int> vec; vec.push_back(1); vec.push_back(2); vector<int>::iterator it = vec.begin(); it++; for (int i = 5; i < 10000; i++) vec.push_back(i); int j = *it; //这里报错 return 1; } |
实验证明:vector push_back后原来的iterator就失效了。
1 2 3 4 5 6 7 8 | list<int> li; li.push_back(1); li.push_back(2); list<int>::iterator itList = li.begin(); itList++; for (int i = 5; i < 10000; i++) li.push_back(i); int result = *itList; |
实验证明:list push_back后原来的iterator依然有效。
如此说明,iterator中存放的是成员的内存地址,而非成员相对基地址的位移。