C++ MAP 删除

来源:互联网 发布:老男孩linux运维 31期 编辑:程序博客网 时间:2024/06/05 11:36

下面一段代码

for(i=itMap.begin(); i!= itMap.end(); i++){itMap.erase(i);}
不知道大家看出什么问题没有


如果这样写肯定会出错

当第一个i被erase后,i指针被释放,下一次i就不再是itMap中的值


正确的算法是

for(i=itMap.begin(); i!= itMap.end();){itMap.erase(i++);}
i++得出的是i+1后返回i原值的一个拷贝给erase使用

这样就不会出错