<iterator>

std::input_iterator_tag

struct input_iterator_tag {};
输入迭代器类别
用于标识迭代器为输入迭代器的空类

输入迭代器


输入迭代器是在顺序输入操作中使用的迭代器,其中迭代器指向的每个值仅被读取一次,然后迭代器会被递增。

所有前向双向随机访问迭代器也是有效的输入迭代器

输入迭代器并没有单一的类型:每个容器都可以定义自己的特定迭代器类型来遍历它并访问其元素。但是,所有输入迭代器至少支持以下操作:

属性有效的表达式
可以拷贝构造拷贝赋值析构X b(a);
b = a;
可以使用相等/不等运算符进行等价比较
(当两个迭代器都在定义域内时才有意义)。
a == b
a != b
(如果在可解引用状态下)可以作为右值解引用。*a
a->m
可以递增(如果处于可解引用状态)。
结果是也可解引用越界迭代器。
递增后,之前的迭代器值不要求是可解引用的
++a
(void)a++
*a++
值类型不一定需要可赋值t = u 非必需
属性有效的表达式
可以拷贝构造拷贝赋值析构X b(a);
b = a;
可以使用相等/不等运算符进行等价比较
(当两个迭代器都在定义域内时才有意义)。
a == b
a != b
(如果在可解引用状态下)可以作为右值解引用。*a
a->m
可以递增(如果处于可解引用状态)。
结果是也可解引用越界迭代器。
递增后,之前的迭代器值不要求是可解引用的
++a
(void)a++
*a++
值类型不一定需要可赋值t = u 非必需
左值是可交换的swap(a,b)

其中 X 是一个输入迭代器类型ab 是该迭代器类型的对象,而 tu 是迭代器类型指向的对象。

需要输入迭代器的算法应该是单次遍历输入算法:算法最多遍历迭代器位置一次。

另见