vector、map删除当前记录

vector、map删除当前记录

map<string, string> sMap;
map<string, string>::iterator iter;
for(iter = sMap.begin();iter != sMap.end();/* iter++ */)
{
    sMap.erase(iter++);
}


注意下列错误表达:

1.
for(iter = sMap.begin();iter != sMap.end(); iter++ )
{
    sMap.erase(iter);
}
错误原因:iter指针在元素被删除后已经失效了,在回到for语句后,无法与sMap.end()进行比较。

2.
for(iter = sMap.begin();iter != sMap.end();/* iter++ */)
{
    sMap.erase(iter);
    iter++;
}
错误原因:执行完sMap.erase(iter)之后,iter指针已经失效了,无法执行iter++ 。

正确表达中 sMap.erase(iter++);
    等价于:
        {

            map<string, string>::iterator temp;
            temp = iter;

            iter自增;
            sMap.erase(temp);
        }

vector、map删除当前记录

vector、map删除当前记录

参见:http://blog.csdn.net/liuzhi67/article/details/50950843

相关文章:

  • 2021-09-18
  • 2021-09-11
  • 2022-12-23
  • 2021-04-14
  • 2022-12-23
  • 2021-11-02
  • 2021-06-06
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-05-31
  • 2021-12-01
  • 2021-10-29
  • 2021-11-17
  • 2022-01-06
相关资源
相似解决方案