您的位置:首页 > 编程语言 > C语言/C++

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

2012-12-18 14:51 169 查看
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 成功后, 返回下一个指针。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐