[C/C++][2012-12-18] erase的返回值会指向下一个节点

本文深入探讨了STL容器中迭代器与擦除操作的关系,解释了擦除后如何更新迭代器指向,特别关注了链表结构下返回值的变化,提供了一个实例代码来演示这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

erase的返回值会指向下一个节点

for(TStrMapIter iter= strmap.begin(); iter!= strmap.end();)

{

      if ("somevalue" == iter->second )

      {

           iter = strmap.erase(iter);

       }

       else

       {

           ++iter;

       }

}

 

1. 为什么要每次计算 strmap.end(), 执行 erase后,其end值可能会变(不是所有STL都是用 链表、有些使用数组, 元素会位移)

 

2. for里面的iter++要写在else中,因为erase 成功后, 返回下一个指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值