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

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