【求助】使用vector.erase()删除一个元素时遇到的一个问题
写了一个小代码玩,想要删除vector中的奇数值。
int main(){ int ia[]={0,1,3,2,3,5,8,13,21,55,89}; vector<int> vec (ia,ia+11); vector<int> ::iterator iter, first; /ector<int>::iterator temp; /*first = find(vec.begin(),vec.end(),5); last = find(vec.begin(),vec.end(),13) vec.erase(first,last);*/ first=vec.begin(); //写法1、这样会出错 while(first != vec.end()) { if ((*first) % 2 != 0) { vec.erase(first); //这样写就会出现错误 continue; } first=first+1; } /*写法2、这样不会出错 while(first != vec.end()) { if ( (*first)%2 != 0) { first = vec.erase(first); //换成这种写法就不会发生错误 continue; } first++; } */ for (iter = vec.begin(); iter != vec.end(); iter++) { cout << *iter << endl; }}iterator erase(iterator position){ if (position + 1 != end()) copy(position + 1, finish, position); --finish; destory(finish); return position;}