64,645
社区成员
发帖
与我相关
我的任务
分享
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;
}