<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 是迭代器型別指向的物件。

需要輸入迭代器的演算法應該是單次遍歷輸入演算法:演算法最多遍歷迭代器位置一次。

另見