迭代器分类
迭代器 | 能力 | 提供 |
---|---|---|
output迭代器 | 向前输出 | Ostream、inserter |
input迭代器 | 向前输入 | Istream |
forward迭代器 | 向前输入输出 | forward list、unordered containers |
bidirectional迭代器 | 向前、向后输入输出 | list、set、multiset、map、multimap |
random-access迭代器 | 随机输入输出 | array、vector、deque、string |
纯粹的 output 迭代器只有 ostream 和 inserter,而纯粹的 input 迭代器只有 istream,其他迭代器既是 output 迭代器,也是 input 迭代器。output迭代器只能用于往迭代器指向的位置写入数据,input迭代器能用不读取迭代器指向位置的数据。
1、output迭代器支持操作:
操作 | 作用 |
---|---|
operator* | 返回迭代器引用 |
operator++ | 返回迭代器引用 |
operator= | 输出数据 |
ostream_iterator<string> writer(cout, "\n");
// 使用方法1
*writer = "hello";
++writer;
*writer = "world";
// 使用方法2
writer = "hello";
writer = "world";
代码以ostream_iterator为例,代码中两种方法的效果一样,inster_iterator也可以得到相同结果。实际对于 output迭代器,operator* 和 operator++ 没有执行任何操作。
2、input迭代器支持操作
操作 | 作用 |
---|---|
operator* | 读取元素 |
operator-> | 访问元素成员 |
operator++ | 向前移动迭代器 |
operator==、!= | 比较迭代器 |