迭代器失效问题
来源:10-4 关联容器的插入删除及迭代器失效问题
 
			慕妹4782275
2021-01-25

老师,您好,这个是运行的您的示例代码,如果将while循环注释掉,下面的for循环就会报迭代器失效问题,如上图
还有,如果将while循环中的if (iter->second < 98.0) 改为if (iter->second < 95.0),则for循环中过滤出的数据错误,没有将LiMing: 95擦除,如下图
写回答
	1回答
- 
				
				和while循环没有关系。你最后一个for循环里的if判断有问题。这时迭代器时效了,必须要更新,你前面那个for循环是对的。然后你的iter++操作要注意,避免重复更新iter,否则会跳过一些元素,导致你说的部分满足条件的元素没被删除。你试试下面的代码。 for (iter = student.begin(); iter != student.end(); ) { if (iter->second < 98.5) { iter = student.erase(iter); } else { iter++; } } 032021-01-27
相似问题
