我们在使用STL容器中的list的时候会碰见迭代器失效的场景,这无非是在内存上出现了问题
以图中为例,用find函数找出3这个位置,使用it迭代器接收这个位置,进行操作,
当这个位置不为空的时候,我们就删除这个位置,这个时候被删除的3这个位置就成为了野指针,
当我们没有下一步操作的时候,迭代器不会失效
结果正常运行
当我们删除这个位置,这个时候被删除的3这个位置就成为了野指针,
下一步操作是去访问这个it位置并++,迭代器会失效
结果就抛异常了,这时候就出现了迭代器的失效
我们在删除迭代器后想继续对迭代器进行操作,那么如何解决呢?
我们找到list中的erase接口,其返回值是下一位置的迭代器,也就是说我们可以使用it来接受这个值,
由于是返回的下一位置的迭代器,++it会错过一个位置,这里我们可以使用if else语句来操作
结果就可以对it迭代器正常操作了
到这里我们讲解完毕
如果对您有帮助的话点一个免费的赞和收藏叭!
由于作者水平不足,如有任何错误,请读者在评论区交流!