次の方法で共有


<algorithm>

アルゴリズムを実行する標準テンプレート ライブラリの (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 アルゴリズムはさまざまなデータ構造体を操作している可能性があるため、一般的です。操作することはデータ構造は vectorlistなど、STL コンテナー クラスのみ、要素の特定のアルゴリズムの要件を満たすプログラム定義されたデータ構造、および配列が含まれます。STL アルゴリズムは、反復子によってコンテナー要素に間接的にアクセスとスキャンすることによって、この性のレベルを実現します。

STL アルゴリズムは開始または終了位置には、通常、指定する反復子範囲を処理します。参照される範囲がスコープ内のすべてのポインターが dereferenceable 必要がありますが、それぞれの範囲のシーケンス内では、最後の位置が incrementation によって最初からアクセス可能である必要があるという意味で有効である必要があります。

STL アルゴリズムは、STL コンテナーの操作やメンバー関数でサポートされるアクションを拡張し、同時にコンテナー オブジェクトの種類 (など) を使用できるようにします。2 個のサフィックスでアルゴリズムの目的に関する情報を伝えるために使用されています。

  • アルゴリズムは、要素の値自体ではなく、要素の値で動作する関数オブジェクトとサフィックスが使用されることを示します。find_if のアルゴリズムは値が関数オブジェクトによって指定された条件を満たす find のアルゴリズムは特定の要素を検索値を検索します。

  • _copy サフィックスは、アルゴリズムで要素の値だけを処理しないか先の範囲に変更された値をコピーします。reverse のアルゴリズムはスコープ内の要素の順序を反転し、reverse_copy のアルゴリズムも先の範囲に結果をコピーします。

STL アルゴリズムがそのユーザーの目的または要件に関する事項を示すグループに分類されます。これらは nonmodifying アルゴリズムと比較して要素の値を変更する変更のアルゴリズムが含まれます。変更のアルゴリズムは要素の順序、要素のない値を変更します。アルゴリズムを削除すると、スコープの範囲またはコピーから要素を削除できます。並べ替えアルゴリズムは、さまざまな方法で範囲の要素を並べ替え、並べ替えられた範囲のアルゴリズムは、要素を特定の方法でソート アルゴリズムでのみ機能します。

数値処理に提供される STL アルゴリズムの数値に述語として認識されるブール値を返すヘッダーの <functional> 関数オブジェクトに独自のヘッダー ファイルが <numeric>、および関数オブジェクトとアダプターが定義されます。既定のバイナリ述語は比較 **operator<**です。一般に、(という意味でいずれも他より小さくない) 等しいこと、任意の 2 種類の要素を受け取り、それがまたはのいずれかを判断できるように、順序付けられた必要がある要素はよりも上または、そのほか未満である。これは、不一致要素間の順序で発生します。

yah1y2x8.collapse_all(ja-jp,VS.110).gif関数

adjacent_find

Equals または指定された条件を満たす 2 個の隣接する要素を検索します。

all_of

要件が特定の範囲内の各要素でも true を返します。

any_of

要件が一度要素の指定範囲に以上の繰り返し true を返します。

binary_search

ある値と同じか、それにある意味で同じになる指定された分類の範囲に要素があるかどうかはテスト バイナリ述語によって。

copy

要素のソース シーケンスを反復処理し、それらに前方にの新しい位置を割り当てるソース範囲内から先の範囲に要素の値を割り当てます。

copy_backward

要素のソース シーケンスを反復処理し、それらに逆方向の新しい位置を割り当てるソース範囲内から先の範囲に要素の値を割り当てます。

copy_if

指定した条件に true をテストする特定の範囲のすべての要素をコピーします。

copy_n

指定された数の要素をコピーします。

count

値が指定した値と一致する範囲内の要素数を返します。

count_if

値が指定した条件に一致する範囲内の要素数を返します。

[等しい]

バイナリ述語によって指定される等値または等価性の要素によって 2 スコープの要素をある意味で比較します。

equal_range

シーケンスの位置を確立するために使用する等価性または命令の意味がバイナリ述語によって指定される要素の位置より大きい 2 番目の指定位置に要素のペアの順序が指定されたスコープ、1 番目の小さいまたは同等の位置を検索およびします。

fill

指定された範囲のすべての要素に同じ新しい値を割り当てます。

fill_n

特定の要素で始まるスコープの指定された数の要素に新しい値を割り当てます。

find

指定された値がスコープ内にある要素の最初に出現する位置を検索します。

find_end

指定されたシーケンスと同じか、またはバイナリ述語によって指定されるある意味で等価である最後のサブシーケンスをスコープが表示されます。

find_first_of

対象範囲内の複数の値のいずれかで最初に出現またはバイナリ述語によって指定される指定した一連の要素である意味で等価な複数の要素の最初のオカレンスを検索します。

find_if

指定された条件を満たす範囲の要素の最初に出現する位置を検索します。

find_if_not

条件を満たさない名前付き範囲の最初の要素を返します。

for_each

スコープ内の事前の順序で各要素に指定された関数オブジェクトを追加し、関数オブジェクトを返します。

生成します。

範囲内の各要素に関数オブジェクトによって生成される値を割り当てます。

generate_n

指定された数の要素に関数オブジェクトによって生成される値を、範囲で値が割り当てられた位置を最後の 1 に戻ります割り当てます。

含まれます。

かどうか 1 種類の並べ替えられた範囲が 2 番目の並べ替えした範囲に含まれるすべての要素を含むテスト要素間の命令または等価性の基準をバイナリ述語によって指定される場合があります。

inplace_merge

命令の条件にバイナリ述語によって指定される単一の並べ替えられた範囲に 2 個の連続する分類された範囲の要素を結合します。

is_heap

指定された範囲の要素がヒープが形成 true を返します。

is_heap_until

指定した範囲の最後の要素までヒープが形成 true を返します。

is_partitioned

要件に対して true をテストする特定の範囲のすべての要素が falseをテストする要素の前に true 場合はを返します。

is_sorted

指定された範囲の要素を並べ替え順序である場合 true を返します。

is_sorted_until

指定された範囲の要素を並べ替え順序である場合 true を返します。

iter_swap

交換は、二つの指定した反復子は 2 の値として参照されます。

lexicographical_compare

2 二つのシーケンス間の要素に、要素を 2 の小さい方であるかを判断する比較します。

lower_bound

命令の条件にバイナリ述語によって指定される可能性がある値により大きい値が等価か、順序が指定された範囲の先頭の要素の位置を検索します。

make_checked_array_iterator

他のアルゴリズムで使用できる checked_array_iterator を作成します。

make_heap

並べ替え基準をバイナリ述語で指定されるかをの最初の要素が最も大きな、ヒープに指定した範囲の要素を変換します。

max

命令の条件にバイナリ述語によって指定される可能性がある場合は、2 種類のオブジェクトを比較し、2 より大きい) を返します。

max_element

命令の条件にバイナリ述語によって指定される可能性がある、指定した範囲の最大の要素の最初の出現箇所を検索します。

merge

命令の条件にバイナリ述語によって指定される単一の、並べ替えられた先の範囲に 2 個の並べ替えられたソース範囲内からすべての要素を結合します。

min

命令の条件にバイナリ述語によって指定される可能性がある場合は、2 種類のオブジェクトを比較し、2 の小さい方を返します。

min_element

命令の条件にバイナリ述語によって指定される可能性がある、指定した範囲の最小の要素の最初の出現箇所を検索します。

minmax

2 個の入力パラメーターを比較し、ペアとしての順序で最大限に返します。

minmax_element

min_elementmax_element によって実行される 1 回の呼び出しで処理を実行します。

不一致

2 スコープの要素をバイナリ述語によって指定される等値または同等の要素である意味で比較し、相違点が発生した最初の位置を検索します。

<alg> move

指定した範囲に関連付けられている要素を実行します。

move_backward

別の 1 に反復子の要素を実行します。指定した範囲の最後の要素との移動の開始され、その範囲内の先頭の要素を持つ端。

next_permutation

次にの意味がバイナリ述語で指定できる場所であれば元の順序が辞書式に次に大きいされた置換に置換されるように、範囲の要素の順序を変更します。

none_of

要件は特定の範囲の要素間でも true を返します。

nth_element

その前のすべての要素が、以下であるシーケンスに大きなされ、すべての要素がまたはそれに相当するように正しい範囲のシーケンスの n 番目の要素を検索する要素の範囲を、分割します。

partial_sort

nondescending 順序にまたはバイナリ述語によって指定される命令の基準に従ってスコープの小さな指定された数の要素を配置します。

partial_sort_copy

コピー先へのソース範囲内からのコピーの要素が、ソース要素が未満または指定した別のバイナリ述語によってどこに順序を占めます。

partition

2 の範囲の要素を表すことで、その制約を満たさない、前の単項演算子の述語を満たす。これらの要素がセットを並べ替えます。

partition_copy

条件が別のコントロールへ false であるをの要件が 1 台のコピー先へ true である、要素をコピーします。要素は、指定した範囲から取り込みます。

partition_point

条件を満たさない特定の範囲の最初の要素を返します。要素が条件を満たす要素が要素の前にあるに分類されます。

pop_heap

最大の要素をヒープの頭から次 (範囲の最後の位置に削除し、残りの要素から新しいヒープを形成します。

prev_permutation

次にの意味がバイナリ述語で指定できる場所であれば元の順序が辞書式に次に大きいされた置換に置換されるように、範囲の要素の順序を変更します。

push_heap

範囲の要素から構成される既存のヒープの範囲の末尾にある要素を追加します。

random_shuffle

Nの 1 にスコープの N 要素のシーケンスを再配置します。ランダムに選択できる並べ替え。

remove

残りの要素の順序を低下させ、指定された値の free な新しい範囲の最後を返さないで特定のスコープ外にある値を除去します。

remove_copy

ソース範囲内から先の範囲にコピーの要素が、指定された値の要素は、残りの要素の順序を低下させ、新しい先の範囲の末尾を返さないにコピーします。

remove_copy_if

ソース範囲内からの範囲。ただし、述語を満たすうえでコピーの要素は、残りの要素の順序を低下させ、新しい先の範囲の末尾を返さないにコピーします。

remove_if

残りの要素の順序を低下させ、指定された値の free な新しい範囲の最後を返さないで特定の範囲の述語を満たす要素を削除します。

replace

ある値と一致する範囲と置換の各要素を、チェックします。

replace_copy

結果を新しい先の範囲にコピー中にある値と一致するソース範囲内と置換の各要素を、チェックします。

replace_copy_if

結果を新しい先の範囲にコピー時に指定した述語を満たすかどうかを置換ソース範囲内の各要素を、チェックします。

replace_if

指定した述語を満たすかどうかをスコープと置換の各要素を、チェックします。

範囲内の要素の順序を反転させます。

reverse_copy

これらを先の範囲にコピー間参照元の範囲内の要素の順序を反転させます

回転

2 種類の範囲の要素を交換します。

rotate_copy

参照元の範囲内の 2 種類の範囲の要素を交換し、先の範囲に結果をコピーします。

検索

要素が要素で指定されたシーケンスとまったく同じか、または特定のシーケンスでバイナリ述語によって指定される要素が要素である意味で等価な対象範囲内のシーケンスの最初のオカレンスを検索します。

search_n

範囲の最初のサブシーケンスのバイナリ検索述語によって指定される値が特定の値または関係を持つ要素の数の指定。

set_difference

1 種類の並べ替えられたソース範囲内に属するが、2 番目の手順の条件にバイナリ述語によって指定される可能性もある、一つの並べ替えられた先の範囲はソース範囲内、分類される要素すべてを結合します。

set_intersection

命令の条件にバイナリ述語によって指定される単一の属するすべての要素が、並べ替えられた先の範囲に両方に分類されたソース範囲内結合します。

set_symmetric_difference

1 に属するが、単一に分類されたソース範囲内の両方が、命令の条件にバイナリ述語によって指定される可能性がある、描画先の範囲を分類されない要素をすべて結合します。

set_union

命令の条件にバイナリ述語によって指定される単一の属するすべての要素が、並べ替えられた先の範囲に 2 個の並べ替えられたソース範囲内の少なくとも 1 つがに結合します。

sort

nondescending 順序にまたはバイナリ述語によって指定される命令の基準に従って指定された範囲の要素を配置します。

sort_heap

並べ替えられた範囲にヒープを変換します。

stable_partition

2 の範囲の要素を送信します。を満たさない、前の単項演算子の述語を満たす。これらの要素がセットを使用して、同等の要素の相対位置ディレクティブを保持します。

stable_sort

指定された範囲の要素を nondescending 順序にまたはバイナリ述語によって指定される命令の基準に従って配置し、同等の要素の相対位置ディレクティブを保持します。

swap

最初のオブジェクトから 1 番目に対する 2 番目のオブジェクトの内容と 2 番目のコンテンツを割り当てる 2 種類のオブジェクト間の要素の値を交換します。

swap_ranges

他の要素、同じサイズの範囲と 1 の範囲の要素を交換します。

変換

ソース範囲内の各要素またはペアの 2 種類のソース範囲内の要素に指定された関数は、オブジェクトの追加、コピー先の範囲オブジェクトに関数の戻り値をコピーします。

unique

削除は、指定された範囲内にある横にある要素を複製します。

unique_copy

コピー先へのソース範囲内からのコピーの要素を互いの横にある重複する要素を除くなります。

upper_bound

命令の条件にバイナリ述語によって指定される可能性がある、指定された値より大きい値を持つ順序付けられた範囲の最初の要素の位置を検索します。

参照

関連項目

C++ の標準ライブラリのスレッド セーフ

標準テンプレート ライブラリ

その他の技術情報

ヘッダー ファイル