STL vector等容器erase操作

    if(!m_partsInfoVec.empty())
    {
        for(vector<ModifyItemWidgetParts*>::iterator iv = m_partsInfoVec.begin();iv != m_partsInfoVec.end();iv++)
        {
            if((*iv)->isChecked())
            {
                int num = (*iv)->m_pointNum->text().toInt();
                delete (*iv);
                iv = m_partsInfoVec.erase(iv); //当需要把当前迭代器删除掉时,调用erase函数,返回值为删除迭代器的下一个迭代器,需要用iv去接收,不然会造成段错误
                for(vector<PlcPointInfo>::iterator it = m_pointInfoVec.begin();it != m_pointInfoVec.end();it++)
                {
                    if((*it).m_pointNum == num)
                    {
                        m_pointInfoVec.erase(it);
                        break;
                    }
                }
                if(iv == m_partsInfoVec.end())
                    break;
            }
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值