关于iter=studentScores.erase(iter);的问题
来源:10-4 关联容器的插入删除及迭代器失效问题
mahsiaoko
2020-04-12
老师,我发现在for循环中,iter=studentScores.erase(iter)返回的是下一个,但是for循环对又来了一个++操作,这个时候好像就跳过去其中的某些元素了吧?
这是for循环之前的;
for (iter = studentScores.begin(); iter != studentScores.end(); iter++)
{
if (iter->second <= 98.5)
{
iter = studentScores.erase(iter); // 注意:迭代器失效问题
}
}
下面是for循环之后的
其中95.0下于98.5,没有被删除
写回答
1回答
-
这里地方应该将++操作拿出来到else中去。
022020-06-15
相似问题