<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 アルゴリズムはさまざまなデータ構造体を操作している可能性があるため、一般的です。操作することはデータ構造は vector と listなど、STL コンテナー クラスのみ、要素の特定のアルゴリズムの要件を満たすプログラム定義されたデータ構造、および配列が含まれます。STL アルゴリズムは、反復子によってコンテナー要素に間接的にアクセスとスキャンすることによって、この性のレベルを実現します。
STL アルゴリズムは開始または終了位置には、通常、指定する反復子範囲を処理します。参照される範囲がスコープ内のすべてのポインターが dereferenceable 必要がありますが、それぞれの範囲のシーケンス内では、最後の位置が incrementation によって最初からアクセス可能である必要があるという意味で有効である必要があります。
STL アルゴリズムは、STL コンテナーの操作やメンバー関数でサポートされるアクションを拡張し、同時にコンテナー オブジェクトの種類 (など) を使用できるようにします。2 個のサフィックスでアルゴリズムの目的に関する情報を伝えるために使用されています。
アルゴリズムは、要素の値自体ではなく、要素の値で動作する関数オブジェクトとサフィックスが使用されることを示します。find_if のアルゴリズムは値が関数オブジェクトによって指定された条件を満たす find のアルゴリズムは特定の要素を検索値を検索します。
_copy サフィックスは、アルゴリズムで要素の値だけを処理しないか先の範囲に変更された値をコピーします。reverse のアルゴリズムはスコープ内の要素の順序を反転し、reverse_copy のアルゴリズムも先の範囲に結果をコピーします。
STL アルゴリズムがそのユーザーの目的または要件に関する事項を示すグループに分類されます。これらは nonmodifying アルゴリズムと比較して要素の値を変更する変更のアルゴリズムが含まれます。変更のアルゴリズムは要素の順序、要素のない値を変更します。アルゴリズムを削除すると、スコープの範囲またはコピーから要素を削除できます。並べ替えアルゴリズムは、さまざまな方法で範囲の要素を並べ替え、並べ替えられた範囲のアルゴリズムは、要素を特定の方法でソート アルゴリズムでのみ機能します。
数値処理に提供される STL アルゴリズムの数値に述語として認識されるブール値を返すヘッダーの <functional> 関数オブジェクトに独自のヘッダー ファイルが <numeric>、および関数オブジェクトとアダプターが定義されます。既定のバイナリ述語は比較 **operator<**です。一般に、(という意味でいずれも他より小さくない) 等しいこと、任意の 2 種類の要素を受け取り、それがまたはのいずれかを判断できるように、順序付けられた必要がある要素はよりも上または、そのほか未満である。これは、不一致要素間の順序で発生します。
関数
Equals または指定された条件を満たす 2 個の隣接する要素を検索します。 |
|
要件が特定の範囲内の各要素でも true を返します。 |
|
要件が一度要素の指定範囲に以上の繰り返し true を返します。 |
|
ある値と同じか、それにある意味で同じになる指定された分類の範囲に要素があるかどうかはテスト バイナリ述語によって。 |
|
要素のソース シーケンスを反復処理し、それらに前方にの新しい位置を割り当てるソース範囲内から先の範囲に要素の値を割り当てます。 |
|
要素のソース シーケンスを反復処理し、それらに逆方向の新しい位置を割り当てるソース範囲内から先の範囲に要素の値を割り当てます。 |
|
指定した条件に true をテストする特定の範囲のすべての要素をコピーします。 |
|
指定された数の要素をコピーします。 |
|
値が指定した値と一致する範囲内の要素数を返します。 |
|
値が指定した条件に一致する範囲内の要素数を返します。 |
|
バイナリ述語によって指定される等値または等価性の要素によって 2 スコープの要素をある意味で比較します。 |
|
シーケンスの位置を確立するために使用する等価性または命令の意味がバイナリ述語によって指定される要素の位置より大きい 2 番目の指定位置に要素のペアの順序が指定されたスコープ、1 番目の小さいまたは同等の位置を検索およびします。 |
|
指定された範囲のすべての要素に同じ新しい値を割り当てます。 |
|
特定の要素で始まるスコープの指定された数の要素に新しい値を割り当てます。 |
|
指定された値がスコープ内にある要素の最初に出現する位置を検索します。 |
|
指定されたシーケンスと同じか、またはバイナリ述語によって指定されるある意味で等価である最後のサブシーケンスをスコープが表示されます。 |
|
対象範囲内の複数の値のいずれかで最初に出現またはバイナリ述語によって指定される指定した一連の要素である意味で等価な複数の要素の最初のオカレンスを検索します。 |
|
指定された条件を満たす範囲の要素の最初に出現する位置を検索します。 |
|
条件を満たさない名前付き範囲の最初の要素を返します。 |
|
スコープ内の事前の順序で各要素に指定された関数オブジェクトを追加し、関数オブジェクトを返します。 |
|
範囲内の各要素に関数オブジェクトによって生成される値を割り当てます。 |
|
指定された数の要素に関数オブジェクトによって生成される値を、範囲で値が割り当てられた位置を最後の 1 に戻ります割り当てます。 |
|
かどうか 1 種類の並べ替えられた範囲が 2 番目の並べ替えした範囲に含まれるすべての要素を含むテスト要素間の命令または等価性の基準をバイナリ述語によって指定される場合があります。 |
|
命令の条件にバイナリ述語によって指定される単一の並べ替えられた範囲に 2 個の連続する分類された範囲の要素を結合します。 |
|
指定された範囲の要素がヒープが形成 true を返します。 |
|
指定した範囲の最後の要素までヒープが形成 true を返します。 |
|
要件に対して true をテストする特定の範囲のすべての要素が falseをテストする要素の前に true 場合はを返します。 |
|
指定された範囲の要素を並べ替え順序である場合 true を返します。 |
|
指定された範囲の要素を並べ替え順序である場合 true を返します。 |
|
交換は、二つの指定した反復子は 2 の値として参照されます。 |
|
2 二つのシーケンス間の要素に、要素を 2 の小さい方であるかを判断する比較します。 |
|
命令の条件にバイナリ述語によって指定される可能性がある値により大きい値が等価か、順序が指定された範囲の先頭の要素の位置を検索します。 |
|
他のアルゴリズムで使用できる checked_array_iterator を作成します。 |
|
並べ替え基準をバイナリ述語で指定されるかをの最初の要素が最も大きな、ヒープに指定した範囲の要素を変換します。 |
|
命令の条件にバイナリ述語によって指定される可能性がある場合は、2 種類のオブジェクトを比較し、2 より大きい) を返します。 |
|
命令の条件にバイナリ述語によって指定される可能性がある、指定した範囲の最大の要素の最初の出現箇所を検索します。 |
|
命令の条件にバイナリ述語によって指定される単一の、並べ替えられた先の範囲に 2 個の並べ替えられたソース範囲内からすべての要素を結合します。 |
|
命令の条件にバイナリ述語によって指定される可能性がある場合は、2 種類のオブジェクトを比較し、2 の小さい方を返します。 |
|
命令の条件にバイナリ述語によって指定される可能性がある、指定した範囲の最小の要素の最初の出現箇所を検索します。 |
|
2 個の入力パラメーターを比較し、ペアとしての順序で最大限に返します。 |
|
min_element と max_element によって実行される 1 回の呼び出しで処理を実行します。 |
|
2 スコープの要素をバイナリ述語によって指定される等値または同等の要素である意味で比較し、相違点が発生した最初の位置を検索します。 |
|
指定した範囲に関連付けられている要素を実行します。 |
|
別の 1 に反復子の要素を実行します。指定した範囲の最後の要素との移動の開始され、その範囲内の先頭の要素を持つ端。 |
|
次にの意味がバイナリ述語で指定できる場所であれば元の順序が辞書式に次に大きいされた置換に置換されるように、範囲の要素の順序を変更します。 |
|
要件は特定の範囲の要素間でも true を返します。 |
|
その前のすべての要素が、以下であるシーケンスに大きなされ、すべての要素がまたはそれに相当するように正しい範囲のシーケンスの n 番目の要素を検索する要素の範囲を、分割します。 |
|
nondescending 順序にまたはバイナリ述語によって指定される命令の基準に従ってスコープの小さな指定された数の要素を配置します。 |
|
コピー先へのソース範囲内からのコピーの要素が、ソース要素が未満または指定した別のバイナリ述語によってどこに順序を占めます。 |
|
2 の範囲の要素を表すことで、その制約を満たさない、前の単項演算子の述語を満たす。これらの要素がセットを並べ替えます。 |
|
条件が別のコントロールへ false であるをの要件が 1 台のコピー先へ true である、要素をコピーします。要素は、指定した範囲から取り込みます。 |
|
条件を満たさない特定の範囲の最初の要素を返します。要素が条件を満たす要素が要素の前にあるに分類されます。 |
|
最大の要素をヒープの頭から次 (範囲の最後の位置に削除し、残りの要素から新しいヒープを形成します。 |
|
次にの意味がバイナリ述語で指定できる場所であれば元の順序が辞書式に次に大きいされた置換に置換されるように、範囲の要素の順序を変更します。 |
|
範囲の要素から構成される既存のヒープの範囲の末尾にある要素を追加します。 |
|
Nの 1 にスコープの N 要素のシーケンスを再配置します。ランダムに選択できる並べ替え。 |
|
残りの要素の順序を低下させ、指定された値の free な新しい範囲の最後を返さないで特定のスコープ外にある値を除去します。 |
|
ソース範囲内から先の範囲にコピーの要素が、指定された値の要素は、残りの要素の順序を低下させ、新しい先の範囲の末尾を返さないにコピーします。 |
|
ソース範囲内からの範囲。ただし、述語を満たすうえでコピーの要素は、残りの要素の順序を低下させ、新しい先の範囲の末尾を返さないにコピーします。 |
|
残りの要素の順序を低下させ、指定された値の free な新しい範囲の最後を返さないで特定の範囲の述語を満たす要素を削除します。 |
|
ある値と一致する範囲と置換の各要素を、チェックします。 |
|
結果を新しい先の範囲にコピー中にある値と一致するソース範囲内と置換の各要素を、チェックします。 |
|
結果を新しい先の範囲にコピー時に指定した述語を満たすかどうかを置換ソース範囲内の各要素を、チェックします。 |
|
指定した述語を満たすかどうかをスコープと置換の各要素を、チェックします。 |
|
範囲内の要素の順序を反転させます。 |
|
これらを先の範囲にコピー間参照元の範囲内の要素の順序を反転させます |
|
2 種類の範囲の要素を交換します。 |
|
参照元の範囲内の 2 種類の範囲の要素を交換し、先の範囲に結果をコピーします。 |
|
要素が要素で指定されたシーケンスとまったく同じか、または特定のシーケンスでバイナリ述語によって指定される要素が要素である意味で等価な対象範囲内のシーケンスの最初のオカレンスを検索します。 |
|
範囲の最初のサブシーケンスのバイナリ検索述語によって指定される値が特定の値または関係を持つ要素の数の指定。 |
|
1 種類の並べ替えられたソース範囲内に属するが、2 番目の手順の条件にバイナリ述語によって指定される可能性もある、一つの並べ替えられた先の範囲はソース範囲内、分類される要素すべてを結合します。 |
|
命令の条件にバイナリ述語によって指定される単一の属するすべての要素が、並べ替えられた先の範囲に両方に分類されたソース範囲内結合します。 |
|
1 に属するが、単一に分類されたソース範囲内の両方が、命令の条件にバイナリ述語によって指定される可能性がある、描画先の範囲を分類されない要素をすべて結合します。 |
|
命令の条件にバイナリ述語によって指定される単一の属するすべての要素が、並べ替えられた先の範囲に 2 個の並べ替えられたソース範囲内の少なくとも 1 つがに結合します。 |
|
nondescending 順序にまたはバイナリ述語によって指定される命令の基準に従って指定された範囲の要素を配置します。 |
|
並べ替えられた範囲にヒープを変換します。 |
|
2 の範囲の要素を送信します。を満たさない、前の単項演算子の述語を満たす。これらの要素がセットを使用して、同等の要素の相対位置ディレクティブを保持します。 |
|
指定された範囲の要素を nondescending 順序にまたはバイナリ述語によって指定される命令の基準に従って配置し、同等の要素の相対位置ディレクティブを保持します。 |
|
最初のオブジェクトから 1 番目に対する 2 番目のオブジェクトの内容と 2 番目のコンテンツを割り当てる 2 種類のオブジェクト間の要素の値を交換します。 |
|
他の要素、同じサイズの範囲と 1 の範囲の要素を交換します。 |
|
ソース範囲内の各要素またはペアの 2 種類のソース範囲内の要素に指定された関数は、オブジェクトの追加、コピー先の範囲オブジェクトに関数の戻り値をコピーします。 |
|
削除は、指定された範囲内にある横にある要素を複製します。 |
|
コピー先へのソース範囲内からのコピーの要素を互いの横にある重複する要素を除くなります。 |
|
命令の条件にバイナリ述語によって指定される可能性がある、指定された値より大きい値を持つ順序付けられた範囲の最初の要素の位置を検索します。 |