C++STL迭代器之简介
在C++STL容器的相关博文中,已经用到了迭代器.本文只是做一些梳理,不会讲解迭代器具体的实现.
概要
迭代器(iterator)可以简单理解成泛类型指针,而且在STL中,每个容器都拥有迭代器
下面以vector为例,说一下迭代器的基本使用:
迭代器模式
迭代器有5类,它们的关系如下图
Input Iterator(输入迭代器):只能单步向前迭代元素,不允许修改由该类迭代器引用的元素。
Output Iterator(输出迭代器):该类迭代器和Input Iterator极其相似,也只能单步向前迭代元素,不同的是该类迭代器对元素只有写的权力。
Forward Iterator(前向迭代器):该类迭代器可以在一个正确的区间中进行读写操作,它拥有Input Iterator的所有特性,和Output Iterator的部分特性,以及单步向前迭代元素的能力。
Bidirectional Iterator(双向迭代器):该类迭代器是在Forward Iterator的基础上提供了单步向后迭代元素的能力。
Random Access Iterator(随机存取迭代器):该类迭代器能完成上面所有迭代器的工作,它自己独有的特性就是可以像指针那样进行算术计算,而不是仅仅只有单步向前或向后迭代。
之所以有不同种类迭代器,那是因为它们有不同的操作,当所有迭代器都有++it,it++操作.
vector和deque提供的是RandomAccessIterator
list提供的是BidirectionalIterator
set和map提供的 iterators是 ForwardIterator
总结
关于迭代器模式的内容几乎来自:
c++迭代器(iterator)详解
迭代器的实现原理博主还没有完全弄清楚,也就不这里卖弄了,等以后进行源码分析再说.不过以上内容足够去使用迭代器了.