vector的erase函数,记住该函数会使迭代器失效,返回下一个迭代器。
#include "stdafx.h"
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> iVec;
vector<int>::iterator it;
int i;
for( i=0;i<10;i++)
iVec.push_back(i);
for( i=0;i<iVec.size();i++)
cout<<iVec[i]<<ends;
cout<<endl;
for(it=iVec.begin();it!=iVec.end();++it)
{
int h=*it;
if(h ==4 || h == 5)
{
it=iVec.erase(it);//此时it指向5
it--; //这里--是有用意的,否则删不了5的
}
}
for( i=0;i<iVec.size();i++)
cout<<iVec[i]<<ends;
cout<<endl;
system("pause");
return 0;
}