<iterator>

std::output_iterator_tag

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

输出迭代器


输出迭代器是可用于顺序输出操作的迭代器,通过该迭代器指向的每个元素只能写入一次值,然后迭代器递增。

所有前向双向随机访问迭代器(非常量迭代器)也都是有效的输出迭代器

不存在单一类型的输出迭代器:每个容器可能定义自己的特定迭代器类型,能够遍历容器并访问其元素。但所有输出迭代器至少支持以下操作:

属性有效的表达式
可拷贝构造可拷贝赋值可析构X b(a);
b = a;
可以作为左值解引用(如果处于可解引用状态)。
它只能作为赋值语句的左侧被解引用。
一旦解引用,其迭代器值可能不再可解引用
*a = t
可以递增。++a
a++
*a++ = t
属性有效的表达式
可拷贝构造可拷贝赋值可析构X b(a);
b = a;
可以作为左值解引用(如果处于可解引用状态)。
它只能作为赋值语句的左侧被解引用。
一旦解引用,其迭代器值可能不再可解引用
*a = t
可以递增。++a
a++
*a++ = t
左值是可交换的swap(a,b)

其中 X输出迭代器类型ab 是该迭代器类型的对象,而 t 是由迭代器类型指向的对象类型(或可以赋值给由类型 X 的对象解引用返回的左值的其他类型)的对象。

需要输出迭代器的算法应该是单趟输出算法:每个迭代器位置最多解引用一次。

另见