STL使用
STL中迭代器失效的场景
在STL中,迭代器可能会在以下情况下失效:
- 向vector或者string中添加元素:如果添加元素导致容器的容量增长,底层的动态数组将会重新分配内存,原有的迭代器将会失效。即使不需要重新分配内存,添加元素后面的迭代器也会失效。
- 从vector或string中删除元素:删除元素会导致元素后的所有迭代器失效。
- 对deque进行insert或erase操作:如果在deque的首部或尾部之外的位置进行insert或erase操作,所有迭代器都将失效。
- 在list或者forward_list中进行erase或splice操作:只有指向被删除元素的迭代器会失效。
- 对set、map、multiset、multimap进行insert或erase操作:只有指向被删除元素的迭代器会失效。
因此,在使用STL容器时,我们需要注意迭代器失效的问题,避免在迭代或者访问元素时使用失效的迭代器,否则会导致未定义行为。
- 作者:Olimi
- 链接:https://olimi.icu/article/b0a9bc5a-6a28-49dd-8188-024d4a851129
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。