C++ vector 之 erase 多个元素的两种常用方法

本文探讨了在C++中如何使用vector的erase方法删除多个元素,提供了两种常见方法,并分享了作者的经验及业内专家的确认。
摘要由CSDN通过智能技术生成

这是一个古老的话题,今天拿来再炒一下,原因是我又用错了。

查阅各种 comments 以及根据我自己的使用经验,当在 vector 中 查找并 删除 其中多个元素时,我发现主要有两种方法:


// ------ Sample 1:

    for ( vector<int>::iterator it = m_vecIDSet.begin(); it != m_vecIDSet.end();  )
    {
        vector<int>::iterator it_tmep = it;
        ++it;

        int nID_in_set = *it_tmep;
        if ( nID_in_set == nID_to_find )
        {
            m_vecIDSet.erase( it_tmep );
        }
    }

// ------ Sample 2:

    for ( vector<int>::iterator it = m_vecIDSet.begin(); it != m_vecIDSet.end();  )
    {

        int nID_in_set = *it;
        if ( nID_in_set == nID_to_find )
            it = m_vecIDSet.erase( it );
        else
            ++it;
    }

       两种方法看似都很好,但是经过我的实验&#
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值