1. 程式人生 > >C++:iterator 標頭檔案詳解

C++:iterator 標頭檔案詳解

<iterator>

header

迭代器定義

一個迭代器可以是指向一定範圍內的陣列或者容器中的元素,具有在一定範圍內陣列進行迭代的操作集合(至少具有增量 ++ 能力和 dereference *運算子)。

迭代器最明顯的形式是指標。指標可以指向陣列中的元素,並可以使用運算子 ++ 迭代它們,但是也可能是其他種類的迭代器。例如,每個容器型別(例如list)具有一個特定的迭代器型別,旨在迭代其元素。

請注意,雖然指標是迭代器的一種形式,但並非所有迭代器都具有相同的指標功能;

迭代器類別

迭代器根據他們的功能分為五類:

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

Random-access iterators 實現了 bidirectional iterators 所有的功能, 並且還能夠非順序訪問範圍: 通過將迭代值應用於迭代器而不迭代其間的所有元素,可以直接訪問遠端元素。這些迭代器具有與標準指標類似的功能(指標是此類別的迭代器)。

迭代器類別的屬性:

類別 特性 表達
Can be incremented ++a
a++
Input Supports equality/inequality comparisons a == b
a != b
Can be dereferenced as an rvalue
*a
a->m
Can be dereferenced as an lvalue 
(only for mutable iterator types)
*a = t
*a++ = t
Multi-pass: neither dereferencing nor incrementing affects dereferenceability { b=a; *a++; *b; }
Can be decremented --a
a--
*a--
Supports arithmetic operators + and - a + n
n + a
a - n
a - b
Supports inequality comparisons (<, >, <= and >=) between iterators a < b
a > b
a <= b
a >= b
Supports compound assignment operations += and -= a += n
a -= n
Supports offset dereference operator ([]) a[n]

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

功能

迭代器操作:

迭代器向前推進

返回兩個迭代器之間的距離

begin 

將迭代器返回到開頭(增長方向:begin -> end)

end 

將迭代器返回到結尾

prev 

獲取前一個元素的迭代器

next 

獲取下一個元素的迭代器

迭代器生成:

從尾部插入元素

從首部插入元素

從指定位置插入一段元素

Construct move iterator (function template )

迭代器基類

迭代器特徵

預定義的迭代器

反轉迭代器

移動迭代器

後插入迭代器

前插入迭代器

插入迭代器

Istream迭代器

Ostream迭代器

輸入流緩衝區迭代器

輸出流緩衝區迭代器

類別標籤

輸入迭代器類別

輸出迭代器類別

轉發迭代器類

雙向迭代器類

隨機訪問迭代器類