共用方式為


演算法

演算法是標準樣板程式庫的基礎部分。 演算法不與容器,而是使用 Iterator 一起使用。 因此,相同演算法可以多數使用,則所有 STL 容器。 本節討論 STL 演算法的慣例和用語。

備註

演算法樣板函式的說明以簡略片語:

  • 片語「範圍 [AB)表示序列零或從 A 開始的 連續值等於但不包含 B。 只有在 B ,從 A, 取用範圍有效;您可以在物件中儲存 N A (N = A),將物件零次或多次 (++N) 和有物件比較等於 B 在加入之後 (N == B) 有限數目

  • 片語「範圍內的每個 N [A, *B)*是指 N 從值的啟動和遞增零次或多次,直到等於值 B。 大小寫 N == B 不在範圍內。

  • 片語「 N 的 最小範圍的[A, *B)*這類 X是指條件 x 為介於 [A 的每個 N 是判斷, B),直到條件符合 x

  • 片語「 N 的 最高值範圍的 [AB)這類 X 表示 X 為介於 [AB) 的每個 N 決定。 每次條件符合 x ,函式儲存於 K 複本。 如果任何存放區發生,函式是 K的值取代 N 的最終值,等於 B,。 對於雙向或隨機存取 Iterator,不過,也可以從 N 表示範圍中最高的啟動和遞減的範圍,直到條件符合 x

  • 運算式中 X -Y,除了隨機存取 Iterator 之外, XY 可以是 Iterator,在數學覺得適合。 則必須判斷這類值,函式不一定評估運算子- 。 同樣也適用於運算式中 X + NX - N,其中 N 是整數型別。

許多演算法利用配對執行比較,例如與 operator==,產生 bool 結果的述詞。 述詞函式 operator==,或它的任何取代,不能修改它的運算元。 它必須產生相同的結果, bool 在其評估時,因此,它必須產生相同的結果,如果任一個運算元複製用運算元會替代。

許多演算法利用必須強制嚴格弱式順序將序列中項目的述詞。 如果述詞 pr(xy):

  • 嚴格表示 pr(X, *X)*是錯誤的。

  • 弱式表示 XY 具有的項目,如果!pr(xy) &&!pr( xy )(x == Y 不需要定義)。

  • 預先定義表示 pr(x, *y) &&*pr(Z),表示 pr(X, Z)。

這些演算法隱含使用 X-Y 述詞 < 。 通常符合嚴格弱式順序要求的其他述詞 x-y > , less(X、 *Y)*和 greater(xy)。 不過,請注意,述詞 X <YX >Y 不滿足要求。

在這個範圍 [First, Last) 之 Iterator 所指定的項目序列是運算子的指令序列**<** ,否則,為介於 [0, Last的每個 N - First) 和範圍 (N, Last的每個 M 的 -First) 述詞! (* (First + M < )* ( + *N)*為 true。(請注意項目以遞增順序排序)。述詞函式 operator<,或它的任何取代,不能修改它的運算元。 它必須產生相同的結果, bool 在其評估時,因此,它必須產生相同的結果,如果任一個運算元複製用運算元會替代。 此外,它必須強制它比較的嚴格弱式順序給運算元。

在這個範圍 [First, Last) 之 Iterator 所指定的項目序列是 operator< 指令的堆積,否則,為介於 [1, Last的每個 N -First) 述詞! (*First < * (First + *N)*為 true。(第一個項目是最大)。它的內部結構只否則知道對樣板函式 make_heappop_heappush_heap。 與排序序列,述詞函式 operator<,或它的任何取代,不能修改它的運算元,因此,它必須強制它比較的嚴格弱式順序給運算元。 它必須產生相同的結果, bool 在其評估時,因此,它必須產生相同的結果,如果任一個運算元複製用運算元會替代。

STL 演算法位於 <algorithm><numeric> 標頭檔。

請參閱

參考

標準樣板程式庫

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