for循环中迭代器失效问题

来源:10-4 关联容器的插入删除及迭代器失效问题

慕雪8063727

2022-12-01

for循环中,当map中只有一个键值对满足要求而不被删除时,依然会报错,请问这个问题该怎么解决?
图片描述
图片描述

写回答

1回答

quickzhao

2022-12-01

改成这样试试:

for (iter = studentSocres.begin(); iter != studentSocres.end(); )

{

if (iter->second <= 99.5)

{

iter = studentSocres.erase(iter);  // 注意:迭代器失效问题

}

else

{

iter++;

}

}

for_each(studentSocres.begin(), studentSocres.end(), Display());

cout << endl;


0
2
quickzhao
回复
慕雪8063727
你仔细想想这里的逻辑,事实上这里如果不判断,直接做iter++是有问题的。
2022-12-01
共2条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程