STL中list的erase()使用注意

STL中的list容器,erase()方法用于删除指定节点,并返回下一个元素的迭代器。然而,调用erase()后,原来的迭代器会被销毁,立即使用会导致错误。正确使用方式包括在erase()后不再使用已销毁的迭代器。参考多个博客资源了解详细信息。
摘要由CSDN通过智能技术生成

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值