STL中的删除操作要注意写成一下两种形式,防止删除后原指针变为野指针导致RTE。
void fun(vector<int>& vec)
{
for(auto iter=vec.begin(); iter!=vec.end();)
{
auto iter1=find(vec.begin(),iter,*iter);
if(iter!=iter1) //判断是否重复,如果两者相等说明没有重复
{
iter = vec.erase(iter);
}
else
iter++;
}
}
void fun(vector<int>& vec)
{
for(auto iter=vec.begin(); iter!=vec.end();)
{
auto iter1=find(vec.begin(),iter,*iter);
if(iter!=iter1) //判断是否重复,如果两者相等说明没有重复
{
vec.erase(iter++);
}
else
iter++;
}
}