vector迭代器失效问题

#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进行了移动,迭代器失效,理解迭代器,关键要认识到迭代器也是一种特殊的指针(说法不甚严谨),它所指的内存到底发生了什么变化。这也需要对容器有相应地理解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章