Share via


Iterator

STL 設施可以讓您廣泛使用 iterator,作為在各種演算法和序列的 2d 圖形之間的橋樑。 Iterator 型別 (或其前置詞) 的名稱會指出該型別所需的 iterator 的類別。 遞增方式排列電源,進行彙總類別視為:

  • 輸出。 輸出 iterator X只能有一個值V儲存它之後,間接必須前下一步] 存放區中,請按照遞增 (*X+ + = V),(*X = V,+ +X),或 (*X = V, X+ +)。

  • 輸入。 輸入的 iterator X可代表單一的值,指出序列結尾。 如果輸入的 iterator 不會比較是否等於它的結束的序列值,它可以具有值V存取間接在其上的時間,在任何數目 (V = *X)。 若要持續進行到下一個值或序列結尾,您遞增,如 + +X, X+ + 中,或 (V = *X+ +)。 一旦您遞增任何一份輸入的 iterator,沒有任何其他的複本可以安全地進行比較,解除參考,或遞增之後。

  • 正向。 順向的 iterator X可以取代用來進行寫入 iterator 輸出或輸入的 iterator,瀏覽。 不過,您可以閱讀 (透過V = *X) 您剛剛撰寫 (透過 *X = V) 透過轉寄的 iterator。 您也可以將多份轉寄的 iterator,每一種可以解除參考並獨立遞增。

  • 雙向。 雙向 iterator X可以進行的順向的 iterator。 您可以,不過,也遞增雙向 iterator,請按照-X, X-,或 (V = *X-)。

  • 隨機存取。 隨機存取 iterator X可以進行雙向 iterator。 您也可以在 [您可以在物件指標的隨機存取 iterator 執行很多相同整數算術。 For N, an integer object, you can write xN,x + N,x - N, and 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 容器和演算法在 STL 的承諾和單價的產品 iterator 的限制。

注意事項注意事項

您也可以使用針對每一個,在來重複 STL 集合。如需詳細資訊,請參閱 How to: 反覆運算 STL 集合與每個

Visual C++現在提供 iterator 以及偵錯 iterator,以確保您不要覆寫容器的界限檢查。 如需詳細資訊,請參閱 檢查過的 Iterator偵錯 Iterator 支援

請參閱

參考

標準樣板程式庫

在標準 C++ 程式庫中的執行緒安全