- Iterator 迭代器
- 常见容器的迭代器
- Auxiliary Iterator Functions 辅助迭代器函数
- Reverse Iterators 反向迭代器
- Insert Iterators 插入迭代器
- 流迭代器(Stream Iterators)
- STL 内建仿函数
- functor adapters binders
- Binders(绑定器)
Iterator 迭代器
Iterator(迭代器)模式又称 Cursor(游标)模式,用于提供一种方法顺序访问一个
聚合对象中各个元素, 而又不需暴露该对象的内部表示。
Iterator 模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道
对象内部表示的情况下,按照一定顺序(由 iterator 提供的方法)访问聚合对象中的各
个元素。
能够让迭代器与算法不干扰的相互发展,最后又能无间隙的粘合起来;
重载了 *,++,==,!=,= 运算符。用以操作复杂的数据结构
容器提供迭代器,算法使用迭代器;
STL 迭代器主要分为以下几类:
输入迭代器(Input Iterators):只能向前移动,每次只能读取一次元素。
| 操作 | 说明 | 示例代码 |
|------------|----------------------------------------------|--------------------------------------------------------------|
| `*it` | 解引用迭代器,获取其指向的元素。 | `std::istream_iterator<int> input_iter(std::cin); int value = *input_iter;` |
| `++it` | 将迭代器向前移动一个位置。 | `++input_iter;` |
|`it++` | 将迭代器向前移动一个位置,并返回原位置。 | `input_iter++;` |
| `it1 == it2` | 比较两个输入迭代器是否相等。 | `if (input_iter1 == input_iter2) { ... }` |
| `it1 != it2` | 比较两个输入迭代器是否不相等。 | `if (input_iter1 != input_iter2) { ... }` |
输出迭代器(Output Iterators):只能向前移动,每次只能写入一次元素。
| 操作 | 说明 | 示例代码 |
|------------|----------------------------------------------|--------------------------------------------------------------|
| `*it = value` | 将值写入迭代器指向的位置。 | `std::ostream_iterator<int> output_iter(std::cout, " "); *output_iter = 42;` |
| `++it` | 将迭代器向前移动一个位置。传回新位置 | `++output_iter;` |
|`it++` | 将迭代器向前移动一个位置,并返回原位置。 | `output_iter++;` |
前向迭代器(Forward Iterators):可以多次读写同一个元素,但只能向前移动。
| 操作 | 说明 | 示例代码 |
|------------|----------------------------------------------|--------------------------------------------------------------|
| `*it` | 解引用迭代器,