迭代器
STL 機能做廣泛使用 Iterator 斡旋這些動作的各種演算法和序列中。 Iterator 型別 (或其前置詞) 名稱表示該型別所需的 Iterator 分類。 依遞增的順序,排序摘要這裡如下:
輸出。 輸出 Iterator X 只能具有值 V 儲存的間接,將之後, 必須 在下一個存放區之前將它,當做 (* ++X= V), (*X = V, ++X),或者 (*X = VX, ++)。
輸入。 輸入 Iterator X 可代表一個單數值表示序列結尾。 如果輸入 Iterator 與其結束序列值比較起來並不相等,它可能是 V 存取的間接其上任意次數,當做 (V =X*)。 若要進行到下一個值或序列結尾,您加入,在 ++X,或者 X- (V =X* ++)。 一旦將輸入 Iterator 的複本,其他複本都無法比較,安全地解除參考或在之後加入。
下一頁。 正向 iterator X 可以代替寫入的輸出 Iterator 或輸入 Iterator 讀取。 您可以,然而,讀取 (透過 V =X*) 所傳遞正向 iterator 撰寫 (透過*X = V)。 您也可以將多個複本正向 iterator,每個可以獨立取值和遞增。
雙向。 雙向 Iterator X 可以代替正向 iterator。 您可以,不過,也可以雙向 Iterator,做為--X, X--或 (V =X*--)。
隨機存取。 隨機存取 Iterator X 可以代替雙向 Iterator。 您也可以執行在隨機存取 Iterator 的相同整數算術在物件指標可以。 對於 N,整數物件,您可以撰寫 x[N], x + Nx, - N和 N + X。
請注意物件指標可以代替隨機存取 Iterator 或任何其他 Iterator。 所有 Iterator 可以指派或複製。 其假設是輕量型物件和通常藉由並傳回值,而非參考。 也請注意前述的作業都是有效 Iterator 不會擲回例外狀況,當執行。
Iterator 類別階層架構可能會顯示三個序列摘要。 如需序列的唯寫存取,您可以使用任何一個:
output iterator
-> forward iterator
-> bidirectional iterator
-> random-access iterator
向右箭號表示可以取代」。需要輸出 Iterator 的所有演算法必須恰好具有向前 Iterator 時,例如,不過, 而不是相反 。
如需序列的唯讀存取,您可以使用任何一個:
input iterator
-> forward iterator
-> bidirectional iterator
-> random-access iterator
輸入 Iterator 是較弱的任何分類,在此例中為。
最後,提供對序列的讀取/寫入存取權,您可以使用任何一個:
forward iterator
-> bidirectional iterator
-> random-access iterator
物件指標一定是做為隨機存取 Iterator,因此,它可以當做 Iterator 任何分類,如果支援已設定為序列的適當的讀取/寫入存取權。
除了物件指標以外的 Iterator Iterator 也必須定義特製化所需的成員型別 iterator_traits<Iterator>。 請注意這些要求可以接收 Iterator 符合公開基底類別 iterator。
這個「代數」Iterator 指向實際任何其他的東西最重要的動作是在標準樣板程式庫中。 了解每個 Iterator 分類的承諾和限制看是重要的容器和演算法如何使用 Iterator 在 STL。
注意事項 |
---|
您也可以使用 針對每一個,在 逐一查看 STL 集合。如需詳細資訊,請參閱How to: 反覆運算 STL 集合與每個。 |
Visual C++ 現在提供已檢查的 Iterator 和偵錯 Iterator 確保您不會覆寫容器的界限。 如需詳細資訊,請參閱已檢查的迭代器與偵錯迭代器支援。