共用方式為


迭代器

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 確保您不會覆寫容器的界限。 如需詳細資訊,請參閱已檢查的迭代器偵錯迭代器支援

請參閱

參考

標準樣板程式庫

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