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

来源:互联网 发布:nodejs调用windows api 编辑:程序博客网 时间:2024/05/22 11:31

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 成功后, 返回下一个指针。

原创粉丝点击