对容器进行遍历读取数据,将容器和算法进行分离。
1 迭代器种类
表2 迭代器种类
| 种类 | 支持功能 | 关联的容器 |
|---|---|---|
| 输入迭代器 | ||
| 输出迭代器 | ||
| 正向迭代器 | ++p, p++, *P | forward_list、unordered_map/unordered_map、unordered_set/unordered_multiset |
| 双向迭代器 | 具有正向迭代器的所有功能,支持--p, p--, ++p, p++, | list、set/multiset、map/multimap |
| 随机访问迭代器 | 具有双向的所有功能,支持p+=i等。 两个随机访问迭代器 p1、p2 还可以用 <、>、<=、>= 运算符进行比较 | array、vector、deque |
其中,输入和输出迭代器是把输入流和输出流分别最为操作对象。且stack和queue容器无对应的适配器。
C++中数组也是迭代器
2 迭代器定义方式
| 迭代器定义方式 | 具体格式 |
|---|---|
| 正向迭代器 | 容器类名::iterator 迭代器名; |
| 常量正向迭代器 | 容器类名::const_iterator 迭代器名; |
| 反向迭代器 | 容器类名::reverse_iterator 迭代器名; |
| 常量反向迭代器 | 容器类名::const_reverse_iterator 迭代器名 |
其中,非常量迭代器可以修改其指向的元素
正向和反向迭代器区别:
同样执行‘++’操作,正向迭代器会指向容器中的后一个元素,方向迭代器则指向容器中的前一个元素。



