#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會指向下一個元素)。
兩種寫法都對...都可以正確的刪掉偶數。
不過還是不建議這種寫法。
沒有留言:
張貼留言