#include < iostream > #include < algorithm > #include < vector > using namespace std; int main () { vector< int > v; for(int i = 1; i <=100;i++ ){ v.push_back(i); } //for(vector< int >::iterator it = v.begin();it!=v.end();){ // if((*it%2) == 0){ // //cout <<"5"; // it = v.erase(it); // // }else{ // ++it; // } // //} //this can correctly erase node for(vector< int >::iterator it = v.begin();it!=v.end();++it){ if((*it%2) == 0){ --(it = v.erase(it)); } } //this is also a correct way...... //print out for(vector< int >::iterator it = v.begin();it!=v.end();++it){ cout << *it<<" "; } system("pause"); }在traverse vector的時候,常常會有需求要刪掉某些元素
這時會因為iterator指向的位置,發生錯誤(erase之後,iterator會指向下一個元素)。
兩種寫法都對...都可以正確的刪掉偶數。
不過還是不建議這種寫法。
沒有留言:
張貼留言