前段时间调试程序,发现一个删除一个map元素后,程序就挂掉了,查来查去,发现迭代器删除后没有重新赋值,这样迭代器指向的数据乱码,而且程序就会挂掉。
所以,使用stl中的迭代器时,无论时vector、list还是map,使用earse后记住将迭代器的值重新赋值(iterator = map.erase(iterator) ),因为earse后,迭代器地址不变,不重新赋值会变成野指针。
关于迭代器,已经earse后的地址验证,这篇文章有详细描述:vector中使用erase操作删除迭代器的问题(避免野指针)以及end的地址变化-CSDN博客