erase()方法是删除iterator指定的节点 ,链表容器使用erase删除节点还有一个特点,就是会将下一个元素的地址返回。但是要注意的是在执行完此函数的时候iterator也被销毁了,这样的话关于iterator的操作就会报错 ,以下是关于erase()方法的正确使用:
正确使用方法1 : std::list< int> List;
std::list< int>::iterator itList;
for( itList = List.begin(); itList != List.end(); )
{
if( WillDelete( *itList) )
{
itList = List.erase( itList);
}
else
itList++;
}
换个写法:
std::list< int>::iterator itList;
itList=List.begin();
while(itList != List.end()){
if(WillDelete(*itList)){
itList=List.erase(itList);
contine;//跳过本次循环
}
itList++;
}
正确使用方法2 : std::list< int> List;
std::list< int>::iterator itList;
for( itList = List.begin(); itList != List.end(); )
{
if( WillDelete( *itList) )
{
List