erase的返回值会指向下一个节点
for(TStrMapIter iter= strmap.begin(); iter!= strmap.end();)
{
}
1. 为什么要每次计算 strmap.end(), 执行 erase后,其end值可能会变(不是所有STL都是用 链表、有些使用数组, 元素会位移)
2. for里面的iter++要写在else中,因为erase 成功后, 返回下一个指针。
本文深入探讨了STL容器中迭代器与擦除操作的关系,解释了擦除后如何更新迭代器指向,特别关注了链表结构下返回值的变化,提供了一个实例代码来演示这一过程。
erase的返回值会指向下一个节点
for(TStrMapIter iter= strmap.begin(); iter!= strmap.end();)
{
}
1. 为什么要每次计算 strmap.end(), 执行 erase后,其end值可能会变(不是所有STL都是用 链表、有些使用数组, 元素会位移)
2. for里面的iter++要写在else中,因为erase 成功后, 返回下一个指针。
1万+
428

被折叠的 条评论
为什么被折叠?