<algorithm>

定義執行演算法的標準樣板程式庫 (STL) (STL) 容器樣板函式。

namespace std {
template<class InputIterator, class Predicate>
    bool all_of (
        InputIterator _First, 
        InputIterator _Last,
        Predicate _Pred
    );
template<class InputIterator, class Predicate>
    bool any_of (
        InputIterator _First, 
        InputIterator _Last,
        Predicate _Pred
    );
template<class InputIterator, class Predicate>
    bool none_of (
        InputIterator _First, 
        InputIterator _Last,
        Predicate _Pred
    );
template<class InputIterator, class Function>
    Fn1 for_each (
        InputIterator _First, 
        InputIterator _Last, 
        Function _Func
    );
template<class InputIterator, class Type>
    InputIterator find (
        InputIterator _First, 
        InputIterator _Last, 
        const Type& _Val
    );
template<class InputIterator, class Predicate>
    InputIterator find_if (
        InputIterator _First, 
        InputIterator _Last, 
        Predicate _Pred
    );
template<class InputIterator, class Predicate>
    InputIterator find_if_not (
        InputIterator _First, 
        InputIterator _Last,
        Predicate _Pred
    ); 
template<class ForwardIterator1, class ForwardIterator2>
    ForwardIterator1 find_end (
        ForwardIterator1 _First1, 
        ForwardIterator1 _Last1,
        ForwardIterator2 _First2, 
        ForwardIterator2 _Last2
    );
template<class ForwardIterator1, class ForwardIterator2, 
         class Predicate>
    ForwardIterator1 find_end (
        ForwardIterator1 _First1, 
        ForwardIterator1 _Last1,
        ForwardIterator2 _First2, 
        ForwardIterator2 _Last2, 
        Predicate _Pred
    );
template<class InputIterator, class ForwardIterator>
    InputIterator1 find_first_of (
        InputIterator _First1, 
        InputIterator _Last1,
        ForwardIterator _First2, 
        ForwardIterator _Last2
    );
template<class InputIterator, class ForwardIterator, 
         class Predicate>
    InputIterator1 find_first_of (
        InputIterator _First1, 
        InputIterator _Last1,
        ForwardIterator _First2, 
        ForwardIterator _Last2, 
        Predicate _Pred
    );
template<class ForwardIterator>
    ForwardIterator adjacent_find (
        ForwardIterator _First, 
        ForwardIterator _Last
    );
template<class ForwardIterator, class Predicate>
    ForwardIterator adjacent_find (
        ForwardIterator _First, 
        ForwardIterator _Last, 
        Predicate _Pred
    );
template<class InputIterator, class Type>
    typename iterator_traits<InputIterator>::difference_type
        count (
            InputIterator _First, 
            InputIterator _Last,
            const Type& _Val
        );
template<class InputIterator, class Predicate>
    typename iterator_traits<InputIterator>::difference_type
        count_if (
            InputIterator _First, 
            InputIterator _Last,
            Predicate _Pred
        );
template<class InputIterator1, class InputIterator2>
    pair<InputIterator1, InputIterator2> 
        mismatch (
            InputIterator1 _First1, 
            InputIterator1 _Last1,
            InputIterator2 _First2
        );
template<class InputIterator1, class InputIterator2, class Predicate>
    pair<InputIterator1, InputIterator2> 
        mismatch (
            InputIterator1 _First1, 
            InputIterator1 _Last1,
            InputIterator2 _First2, 
            Predicate _Pred
        );
template<class InputIterator1, class InputIterator2>
    bool equal (
        InputIterator1 _First1, 
        InputIterator1 _Last1, 
        InputIterator2 _First2
    );
template<class InputIterator1, class InputIterator2, class Predicate>
    bool equal (
        InputIterator1 _First1, 
        InputIterator1 _Last1, 
        InputIterator2 _First2, 
        Predicate _Pred
    );
template<class ForwardIterator1, class ForwardIterator2>
    ForwardIterator1 search (
        ForwardIterator1 _First1, 
        ForwardIterator1 _Last1,
        ForwardIterator2 _First2, 
        ForwardIterator2 _Last2
    );
template<class ForwardIterator1, class ForwardIterator2, 
         class Predicate>
    ForwardIterator1 search (
        ForwardIterator1 _First1, 
        ForwardIterator1 _Last1,
        ForwardIterator2 _First2, 
        ForwardIterator2 _Last2, 
        Predicate _Pred
    );
template<class ForwardIterator, class Size, class Type>
    ForwardIterator search_n (
        ForwardIterator _First, 
        ForwardIterator _Last,
        Size _Count, 
        const Type& _Val
    );
template<class ForwardIterator, class Size, class Type, 
         class Predicate>
    ForwardIterator search_n (
        ForwardIterator _First, 
        ForwardIterator _Last,
        Size _Count, 
        const Type& _Val, 
        Predicate _Pred
    );

備註

,因為它們可以在各種資料結構, STL 演算法是泛型。它們可以操作的資料結構不僅包括 STL 容器類別 (例如 vectorlist,,還滿足特定演算法之需求的程式中定義的資料結構和某些項目。STL 演算法可間接存取和周遊容器中的項目來達成此層級一般性透過 Iterator。

STL 演算法來處理它們的開頭或結尾位置通常會指定之 Iterator 範圍。參考的範圍必須是有效的,因為在範圍內的任何指標必須 dereferenceable,必要時,在每個範圍內的序列,最後一個位置必須是可取得的開頭會增加。

STL 演算法是由每個 STL 容器的作業和成員函式所支援的動作並允許,例如,與容器物件使用不同的型別相同時。兩個後置字元被用來傳達演算法的用途的相關資訊。

  • 如果該尾碼,指出演算法搭配函式對作業在項目的值而不是在項目的值。find_if 演算法搜尋值符合函式物件指定的準則的項目,因此, find 演算法來搜尋特定的值。

  • _copy 後置字元表示演算法不僅管理項目的值,但也會複製修訂值到目的範圍。reverse 演算法反轉項目的順序在範圍內,並 reverse_copy 演算法,並且也將結果到目的範圍。

STL 演算法通常分為表示某項目相對於其目的或需要的群組。這些包含變更項目的值。nonmodifying 的演算法比較不修改的演算法。變更的演算法變更項目順序,不過,其元素的集合不傳回值。移除演算法可以從範圍或範圍的複本排除項目。排序演算法重新排列在某個範圍的項目以各種方式,並排序範圍演算法在項目是否已排序以特定方式的演算法只作用。

已為數字處理提供的數字 STL 演算法有自己的標頭檔 <numeric>,和函式的物件,以及配置器在標題 <functional> 函式定義物件傳回布林值稱為述詞。預設二進位述詞是比較 operator<。一般而言,是的元素順序的需求是比可比較,以便將任何兩個項目,才能判斷或其相等 (因為都比其他不小於) 或是小於另一個。這會導致排程在非對等的項目中。

yah1y2x8.collapse_all(zh-tw,VS.110).gif功能

adjacent_find

搜尋是等於或符合指定之條件的兩個相鄰的項目。

all_of

,當條件為存在於所指定範圍時,的每個項目傳回 true 。

any_of

如果條件至少一次是在項目中,指定的範圍 true 傳回。

binary_search

測試是否有具有指定數值相等或與它其實相當於以二進位述詞指定的排序範圍內的項目。

copy

將值從來源範圍到目的範圍,逐一查看來源項目序列並指定順向移動項目的值的新位置。

copy_backward

將值從來源範圍到目的範圍,逐一查看來源項目序列並指定在一個反向的項目之值的新位置。

copy_if

複製為特定條件測試 true 在特定範圍中的所有項目。

copy_n

複製指定的項目數目。

count

傳回的項目數目值符合指定的值範圍的。

count_if

傳回的項目數目值符合指定之條件的範圍之外。

等於

由項目實際上會比較兩個範圍項目的一個二進位述詞或等於指定的是否相等。

equal_range

尋找一組前面加上一個已排序的範圍中,第一次或對等的位置設定為指定的項目位置和第二個大於項目的位置,用來感覺上等於或排程建置在序列中位置可能是由二進位述詞指定。

fill

指派的新值與中指定範圍內的每個項目。

fill_n

指派新值給指定的項目數目是以特定項目的範圍內。

find

找出項目的第一次出現的位置具有指定值的範圍。

find_end

在範圍會在一個二進位述詞實際上就相當於指定的以指定的順序與中的或中的最後一個序列。

find_first_of

搜尋的第一個符合任何在目標範圍內的多個值或第一次出現的某個二進位述詞實際上就相當於指定的和項目的一組指定下列任何項目。

find_if

找出項目的第一次出現的位置中符合指定之條件的範圍。

find_if_not

傳回在不符合條件的指示範圍中第一個項目。

for_each

套用至每個項目上執行指定的函式物件中某個範圍內的向前順序並傳回函式物件。

產生

指派給每個項目呼叫物件建立的值在的範圍。

generate_n

指派給項目的指定數目的函式物件建立的值是範圍並返回透過上一個指定之值的位置上。

包含

已排序的範圍是否包含在第二個排序範圍內的所有項目的測試,在項目之間的順序或相等準則可能是由二進位述詞指定。

inplace_merge

合併兩個連續的已排序範圍內的項目結合成單一排序的範圍,排序準則可能是由二進位述詞指定。

is_heap

如果在指定的範圍的項目形成堆積,傳回 true 。

is_heap_until

如果指定的範圍形成直到最後一個項目,則傳回 true 堆疊。

is_partitioned

傳回 true ,如果為條件測試 true 在指定範圍內的所有項目都在測試 false的所有項目之前。

is_sorted

如果在指定的範圍的項目依排序順序,傳回 true 。

is_sorted_until

如果在指定的範圍的項目依排序順序,傳回 true 。

iter_swap

交換兩個值是由一組指定之 Iterator 所參考的資料

lexicographical_compare

由兩個序列之間的項目比較項目決定哪些是較小的兩個。

lower_bound

尋找第一個項目的位置是值大於或等於指定值,排序準則可能是由二進位述詞指定的已排序的範圍。

make_checked_array_iterator

建立其他演算法使用的 checked_array_iterator

make_heap

轉換從指定範圍內的元素的第一個項目是最大,而且堆積哪一個排序準則可以指定具有二進位述詞。

max

比較兩個物件並傳回兩個大,其中排程準則可能是由二進位述詞指定。

max_element

尋找最大項目第一次出現在排程的準則可能是由二進位述詞指定的所指定的範圍內。

merge

合併兩個已排序的來源範圍中所有的項目結合成單一,排序的目的範圍,排序準則可能是由二進位述詞指定。

min

比較兩個物件並傳回較小,其中兩個排序準則可能是由二進位述詞指定。

min_element

尋找最小項目第一次出現在排程的準則可能是由二進位述詞指定的所指定的範圍內。

minmax

比較兩個輸入參數並傳回以一組,依最少的順序加入至最大。

minmax_element

在呼叫時執行 min_elementmax_element 所執行的工作。

不相符

由項目實際上會比較兩個範圍項目的一個二進位述詞或對等的指定相等並找出差異發生的第一個位置。

<alg> move

移動項目與指定的範圍。

move_backward

移動 Iterator 的項目加入至另一個。移動開始在指定範圍中的最後一個與第一個項目中的項目和結束該範圍內。

next_permutation

重新排列在範圍內的項目,讓原始順序會用於斷字的下一個更大的變更取代,如果有的話,其中明年 五月感覺指定具有一個二進位述詞。

none_of

如果條件在給定範圍時,中的項目一定不會傳回 true 存在。

nth_element

分割,正確設定這個序列中的 第 n個元素的元素範圍範圍,讓前面的所有項目小於或等於它,並遵循此序列中的所有項目大於或等於它。

partial_sort

具有較小的項目的指定數目範圍內的輸入 nondescending 的命令或以二進位述詞指定的排序準則。

partial_sort_copy

複製來源範圍的項目輸入來源項目由小於或另一個指定的二進位述詞排序的目的範圍。

partition

分類在範圍內的元素加入兩個斷續文字範圍的集合,而這些項目是否在未滿足它的前一個一元運算子的述詞。

partition_copy

重複的條件為 true 至目的,項目,以及的條件為 false 到另一個。項目必須來自指定的範圍。

partition_point

傳回在不符合條件的指定範圍中第一個項目。項目排序,以便符合條件的項目不在的項目之前。

pop_heap

從堆疊的最上層移除最大的元素至下) 表示範圍中的最後位置然後構成從其餘項目的新的堆積。

prev_permutation

重新排列在範圍內的項目,讓原始順序會用於斷字的下一個更大的變更取代,如果有的話,其中明年 五月感覺指定具有一個二進位述詞。

push_heap

將位於範圍結尾為包含在這個範圍中現有的任何前置的項目中加入項目。

random_shuffle

重新整理 N 個項目序列範圍中輸入一個 N!可能的封送處理隨機選擇。

remove

從指定範圍中排除某個值,而不會干擾其他項目的順序以及傳回新範圍的結尾為指定的值。

remove_copy

複製來源範圍的項目到目的範圍,但是有一點例外,就是一個指定的項目不會複製,並不會干擾其他項目的順序和傳回新的目的範圍的結尾。

remove_copy_if

複製來源範圍的項目到目的範圍,但是有一點例外,就是滿足述詞不會複製,並不會干擾其他項目的順序和傳回新的目的範圍的結尾。

remove_if

排除滿足從指定範圍的述詞,而不會干擾其他項目順序並傳回新範圍的結尾為指定的項目。

replace

如果符合指定的值,檢查在範圍內的每個項目並取代它。

replace_copy

檢查來源範圍內的每個項目並將它取代成,則符合指定的值,並將結果放入新的目的範圍時。

replace_copy_if

檢查來源範圍內的每個項目並將它取代成,則滿足指定的述詞,並將結果放入新的目的範圍時。

replace_if

如果滿足指定的述詞,檢查在範圍內的每個項目並取代它。

反向

反轉項目的順序在範圍內。

reverse_copy

反轉項目的順序在來源範圍內的內容,並將其複製到目的範圍時

旋轉

若要在兩個相鄰的範圍的項目。

rotate_copy

若要在兩個相鄰的範圍的項目在來源範圍內並複製結果到目的範圍。

搜尋

搜尋一個序列的第一個會在二進位述詞實際上就相當於指定的項目與相等項目特定順序或項目與項目在指定的序列的目標範圍內。

search_n

搜尋指定的項目數字具有特定的值或關聯至該值所指定一個二進位述詞的範圍中的第一個序列。

set_difference

結合屬於已排序的來源範圍中的所有項目,但是,若為第二個排序的來源範圍,結合成單一,排序的目的範圍,排序準則可能是由二進位述詞指定。

set_intersection

結合隸屬於這兩個排序的來源範圍結合成單一的所有項目之後,已排序的目的範圍,排序準則可能是由二進位述詞指定。

set_symmetric_difference

結合屬於其中一個的所有項目,但是,但不能同時指定兩者,排序的來源範圍加入單一的,已排序的目的範圍,排序準則可能是由二進位述詞指定。

set_union

結合屬於兩個已排序的來源範圍至少有一個結合成單一的所有項目之後,已排序的目的範圍,排序準則可能是由二進位述詞指定。

sort

將位於指定範圍內的項目。nondescending 的命令或以二進位述詞指定的排序準則。

sort_heap

轉換堆疊為已排序的範圍。

stable_partition

分類在範圍內的元素加入兩個斷續文字範圍的集合,而這些項目是否在未滿足它的前一個一元運算子的述詞,保留相等項目的相對順序。

stable_sort

將位於指定範圍內的項目。nondescending 的命令或以二進位述詞指定的排序準則並儲存相對順序對等項目。

交換

交換項目的值在物件之間的兩種類型的,指定第一個物件加入至第二個物件的內容和內容第二個的第一個。

swap_ranges

切換至某個範圍的項目以其他的項目,這個大小相等的範圍。

Transform - 轉換

從兩個來源範圍套用至指定的函式物件至來源範圍內的每個元素或一組項目並複製函式物件的傳回值到目的範圍。

unique

移除彼此相鄰中指定範圍內的重複的項目。

unique_copy

複製來源範圍中之項目的目的範圍但彼此相鄰的重複的項目。

upper_bound

尋找第一個項目的位置是值大於指定值大於,排序準則可能是由二進位述詞指定的已排序的範圍。

請參閱

參考

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

標準樣板程式庫

其他資源

標頭檔