版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/han_hhh/article/details/81153095
iterator erase (const_iterator position); iterator erase (const_iterator first, const_iterator last);
erase前为迭代器(指针)而不是单纯的数。它的作用是使作为参数的迭代器失效,并返回指向该迭代器下一参数的迭代器。
两种正确写法:
正确写法一:
//正确写法一:
list<int> List;
list<int>::iterator itList;
for(itList=List.begin();itList!=List.end();){
if(Delete(*itList)){
itList=List.erase(itList); //这句话执行以后就会返回下一个迭代器
}
else
itList++;
}
正确写法二:
list<int> List;
list<int>::iterator itList;
for(;itList!=List.end();){
List.erase(itList++);
}
错误写法:
list<int> List;
list<int>::iterator itList;
itList=List.begin();
for(;itList!=List.end();itList++){
List.erase(itList);
}
错误原因:不能跳出循环
List.erase(itList);每次都有可能使迭代器失效,会使itList++发生错误,