C++中迭代器的認識
阿新 • • 發佈:2019-02-02
在C++中,迭代器是個很重要的概念。迭代器的用法也比較靈活、簡單,但是要注意某些使迭代器失效的容器操作。通常在容器中動態插入、刪除。移動元素等時,會導致迭代器的失效,這
樣的直接後果是導致程式執行時嚴重的錯誤。如下:
上述iter的初值為MyVec.end(),但在iter前插入一個元素後,iter就會失效,從而導致類似懸垂指標的錯誤。為保正確,必須在容器動態變化後調整迭代器的值。#include<iostream> #include<vector> using namespace std; int main() { vector<int>MyVec; vector<int>::iterator iter=MyVec.end(); for(int i=0;i<10;i++) { //下面有錯 MyVec.insert(iter,i); //下面正確的 // MyVec.insert(MyVec.begin(),i); } for(iter=MyVec.begin();iter!=MyVec.end();++iter) cout<<(*iter)<<" "; cout<<endl; return 0; }
持續更新中…
歡迎大家交流與斧正!