跳转至

Iterators

iterator 是统一访问容器元素的位置对象,本质像泛化指针,让算法和容器解耦。算法不直接依赖容器内部结构,只依赖迭代器能力,所以同一个算法能用于 vector、list、map 等不同容器

end 指向最后一个元素的下一个位置

迭代器类别:

  1. 输入迭代器(Input Iterator):允许单次遍历元素的只读访问
  2. 输出迭代器(Output Iterator):允许单次遍历元素的只写访问
  3. 前向迭代器(Forward Iterator):支持输入迭代器和输出迭代器的所有操作,并且可以多次遍历同一个元素。它以单步方式前进
  4. 双向迭代器(Bidirectional Iterator):扩展了前向迭代器的功能,增加了逆向遍历的能力,即可以通过递减操作符 -- 向后移动
  5. 随机访问迭代器(Random Access Iterator):提供了对元素的随机访问能力,支持全部的指针算术运算
  6. 连续迭代器(Contiguous Iterator):可以理解为比随机访问迭代器更强的一类迭代器。它不仅支持随机访问,还保证逻辑上相邻的元素在物理内存中也相邻,也就是连续存储

算法对迭代器能力有要求:例如 sort 需要随机访问迭代器,所以能用于 vector,不能直接用于 list。list 需要用自己的成员函数 sort

vector 迭代器功能强但容易因扩容失效;list 迭代器支持双向移动,插删稳定但不支持随机访问;map 迭代器按键有序遍历,插入通常不破坏已有迭代器

评论区

欢迎在评论区指出文档错误,为文档提供宝贵意见,或写下你的疑问