迭代器失效

当从容器中删除元素或者向容器中添加元素时,会出现迭代器失效问题。

map

在c++11以前,map提供了void erase(iterator pos)来从map中删除元素,此函数返回值为void。因此,在这种情况,需要提前保存下一个有效位置迭代器来防止迭代器失效。在c++11之后,添加了iterator erase(iterator pos)来从map中删除元素,并返回下一个有效位置迭代器。此时,可以用提前保存下一个有效迭代器的方法,也可以用使用erase函数的返回值为迭代器重新赋值的方法。

参考文献

[1]map迭代器失效问题:https://en.cppreference.com/w/cpp/container/map/erase