下面一段代码
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使用
这样就不会出错