<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 的物件解引用返回的左值的其他型別)的物件。

需要輸出迭代器的演算法應該是單趟輸出演算法:每個迭代器位置最多解引用一次。

另見