迭代器失效的规则

Alo*_*ave 5 c++ iterator stl invalidation

在STL容器类(Vector,Dequeue,list,map,multimap,set,multiset)上操作时,Iterator失效的常用规则是什么?是否有可能对C++ STL程序员在处理容器及其迭代器时必须注意的一些一般规则/指南进行分类和总结?

Bjö*_*lex 6

这些规则是特定于容器的.实际上,这些是决定您使用哪个容器的重要标准.

例如,std::vector插入对象时,it的迭代器会失效(取决于插入对象的位置和重新分配的位置),并且在迭代器之前删除对象时它们会失效.一个std::list没有这个问题.插入和删除对象(迭代器指向的对象除外)不会使迭代器无效.

SGI提供了很好的文档.