使用erase函数删除vector的做法
int a[3] = {1,2,3};
vector<int> v(a,a+3);
//错误演示
for(vector<int>::iterator it =v.begin();v != v.end();it++)
{
if(*it ==2)
{
it = v.erase(it);//表示将当前迭代器的下一个迭代器赋给it,不然it将为野指针
}
}
//方案一
if(*it ==2)
{
it = v.erase(it);//表示将当前迭代器的下一个迭代器赋给it,不然it将为野指针
it--;
}
//方案二
for(vector<int>::iterator it =v.begin();v != v.end();)
{
if(*it ==2)
{
it = v.erase(it);//表示将当前迭代器的下一个迭代器赋给it,不然it将为野指针
}
else
it++;
}