发布于: 2023-10-9最后更新: 2023-10-9字数 00 分钟

STL使用

STL中迭代器失效的场景

在STL中,迭代器可能会在以下情况下失效:
  1. 向vector或者string中添加元素:如果添加元素导致容器的容量增长,底层的动态数组将会重新分配内存,原有的迭代器将会失效。即使不需要重新分配内存,添加元素后面的迭代器也会失效。
  1. 从vector或string中删除元素:删除元素会导致元素后的所有迭代器失效。
  1. 对deque进行insert或erase操作:如果在deque的首部或尾部之外的位置进行insert或erase操作,所有迭代器都将失效。
  1. 在list或者forward_list中进行erase或splice操作:只有指向被删除元素的迭代器会失效。
  1. 对set、map、multiset、multimap进行insert或erase操作:只有指向被删除元素的迭代器会失效。
因此,在使用STL容器时,我们需要注意迭代器失效的问题,避免在迭代或者访问元素时使用失效的迭代器,否则会导致未定义行为。