標頭檔案

<iterator>

迭代器定義
迭代器是指向一個元素序列(如陣列或容器)中的某個元素,並且能夠使用一組運算子(至少包括遞增(++)和解引用(*)運算子)遍歷該序列元素的任何物件。

最明顯的迭代器形式是指標:指標可以指向陣列中的元素,並可以透過遞增運算子(++)在它們之間迭代。但其他型別的迭代器也是可能的。例如,每種容器型別(如list)都有一個專門用於遍歷其元素的迭代器型別。

請注意,雖然指標是迭代器的一種形式,但並非所有迭代器都具有與指標相同的多功能性;根據迭代器支援的屬性,它們被分為五個不同的類別

迭代器類別

根據其實現的類容,迭代器分為五類


輸入輸出迭代器是最有限的迭代器型別:它們可以執行順序的單次輸入或輸出操作。

前向迭代器具有輸入迭代器的所有功能,並且(如果它們不是常量迭代器)還具有輸出迭代器的功能,儘管它們僅限於在一個方向上遍歷序列(前向)。所有標準容器都支援至少前向迭代器型別。

雙向迭代器類似於前向迭代器,但也可以向後迭代。

隨機訪問迭代器實現了雙向迭代器的所有功能,並且還能夠非順序地訪問範圍:可以透過將偏移量應用於迭代器來直接訪問遠距離的元素,而無需遍歷中間的所有元素。這些迭代器具有與標準指標類似的功能(指標是此類別中的迭代器)。

每個迭代器類別的屬性是

類別屬性有效的表示式
所有類別可複製構造可複製賦值可析構X b(a);
b = a;
可以遞增++a
a++
隨機訪問雙向前向輸入支援相等/不相等比較a == b
a != b
可作為右值解引用*a
a->m
輸出可作為左值解引用
(僅適用於可變迭代器型別
*a = t
*a++ = t
預設可構造X a;
X()
多遍:解引用或遞增都不會影響解引用能力{ b=a; *a++; *b; }
可以遞減--a
a--
*a--
支援算術運算子+-a + n
n + a
a - n
a - b
支援迭代器之間的比較(<, >, <=>=a < b
a > b
a <= b
a >= b
支援複合賦值運算+=-=a += n
a -= n
支援偏移量解引用運算子([])a[n]

其中X是迭代器型別,a和 b是此迭代器型別的物件,t是由迭代器型別指向的型別的物件,而n是一個整數值。

更多詳細資訊,請參閱輸入迭代器輸出迭代器前向迭代器雙向迭代器隨機訪問迭代器的參考。

函式

迭代器操作:

迭代器生成器:


預定義迭代器


類別標籤