アルゴリズムライブラリ
アルゴリズムライブラリは要素の範囲に対して動作する様々な目的 (検索、ソート、計数、操作など) の関数を定義します。 範囲は [first, last)
として定義され、 last
は調査または変更する最後の要素の次の要素を参照することに注意してください。
制約付きアルゴリズムC++20 ではほとんどのアルゴリズムの制約付きバージョンが名前空間 std::vector<int> v ={7, 1, 4, 0, -1}; std::ranges::sort(v);// 制約付きアルゴリズム ヘッダ <iterator> は共通アルゴリズム操作を制約付きにすることを容易にするために設計されたコンセプトおよび関連ユーティリティのセットを提供します。 | (C++20以上) |
実行ポリシーほとんどのアルゴリズムには実行ポリシーを受け取るオーバーロードがあります。 標準ライブラリのアルゴリズムはいくつかの実行ポリシーをサポートしており、対応する実行ポリシー型とオブジェクトが提供されます。 ユーザは対応する型の実行ポリシーオブジェクトを指定して並列アルゴリズムを呼び出すことで、実行ポリシーを静的に選択できます。 標準ライブラリの実装は拡張として追加の実行ポリシーを定義している場合があります。 処理系定義型の実行ポリシーオブジェクトを指定して並列アルゴリズムを呼び出した場合のセマンティクスは処理系定義です。 並列版のアルゴリズム (std::for_each と std::for_each_n を除きます) は、 std::is_trivially_copy_constructible_v<T> かつ std::is_trivially_destructible_v<T> であれば (ただし
| (C++17以上) |
非変更シーケンス操作 | |
ヘッダ <algorithm> で定義 | |
(C++11)(C++11)(C++11) | 述語が指定範囲の要素のすべてに対して true を返すかどうか、いずれかに対して true を返すかどうか、またはいずれに対しても true を返さないかどうか、調べます (関数テンプレート) |
指定範囲の要素に関数を適用します (関数テンプレート) | |
(C++17) | 指定個数の要素に関数を適用します (関数テンプレート) |
一定の基準を満たす要素の数を返します (関数テンプレート) | |
2つの範囲が異なる最初の位置を探します (関数テンプレート) | |
(C++11) | 一定の基準を満たす最初の要素を探します (関数テンプレート) |
指定された要素の並びが現れる最後の位置を探します (関数テンプレート) | |
指定された要素のいずれかが現れる位置を探します (関数テンプレート) | |
同じ要素 (または指定された述語を満たす要素) 2つが隣接している最初の位置を探します (関数テンプレート) | |
指定範囲の要素に対して検索を行います (関数テンプレート) | |
指定個数の連続する指定要素を指定範囲から検索します (関数テンプレート) | |
変更シーケンス操作 | |
ヘッダ <algorithm> で定義 | |
(C++11) | 指定範囲の要素を新しい位置にコピーします (関数テンプレート) |
(C++11) | 指定個数の要素を新しい位置にコピーします (関数テンプレート) |
指定範囲の要素を後ろからコピーします (関数テンプレート) | |
(C++11) | 指定範囲の要素を新しい位置にムーブします (関数テンプレート) |
(C++11) | 指定範囲の要素を後ろからムーブします (関数テンプレート) |
指定された要素を範囲内の全要素にコピー代入します (関数テンプレート) | |
指定された要素を指定個数の要素にコピー代入します (関数テンプレート) | |
指定範囲の要素に関数を適用し、結果を別の範囲に格納します (関数テンプレート) | |
関数を連続的に呼び出した結果を指定範囲の全要素に代入します (関数テンプレート) | |
関数を連続的に呼び出した結果を指定個数の要素に代入します (関数テンプレート) | |
一定の基準を満たす要素を削除します (関数テンプレート) | |
指定範囲の要素から一定の基準を満たすものを除いてコピーします (関数テンプレート) | |
一定の基準を満たすすべての値を別の値に置き換えます (関数テンプレート) | |
一定の基準を満たす要素を別の値に置き換えながら指定範囲をコピーします (関数テンプレート) | |
2つのオブジェクトの値を入れ替えます (関数テンプレート) | |
2つの範囲の要素を入れ替えます (関数テンプレート) | |
2つのイテレータが指す要素を入れ替えます (関数テンプレート) | |
指定範囲の要素の順序を反転させます (関数テンプレート) | |
指定範囲の要素の順序を反転させたコピーを作成します (関数テンプレート) | |
指定範囲の要素の順序を回転させます (関数テンプレート) | |
指定範囲の要素の順序を回転させたコピーを作成します (関数テンプレート) | |
(C++20) | 範囲内の要素をシフトします (関数テンプレート) |
(C++17未満)(C++11) | 指定範囲の要素をランダムに並べ替えます (関数テンプレート) |
(C++17) | 指定個数の要素をランダムに選択します (関数テンプレート) |
指定範囲の連続している重複要素を削除します (関数テンプレート) | |
指定範囲の要素の連続している重複要素が含まれないコピーを作成します (関数テンプレート) | |
分割操作 | |
ヘッダ <algorithm> で定義 | |
(C++11) | 指定範囲が指定した述語で分割されているかどうか調べます (関数テンプレート) |
指定範囲の要素を2つのグループに分割します (関数テンプレート) | |
(C++11) | 指定範囲の要素を2つのグループに分割しながらコピーします (関数テンプレート) |
相対的な順序を維持しながら要素を2つのグループに分割します (関数テンプレート) | |
(C++11) | 分割された範囲の分割点を探します (関数テンプレート) |
ソート操作 | |
ヘッダ <algorithm> で定義 | |
(C++11) | 指定範囲が昇順にソートされているか調べます (関数テンプレート) |
(C++11) | 最も大きなソート済みの部分範囲を探します (関数テンプレート) |
指定範囲を昇順にソートします (関数テンプレート) | |
指定範囲の最初の N 個の要素をソートします (関数テンプレート) | |
指定範囲の最初の N 個の要素がソートされたコピーを作成します (関数テンプレート) | |
等しい要素間の順序を維持しながら指定範囲の要素をソートします (関数テンプレート) | |
指定された要素で分割されるように指定範囲を部分ソートします (関数テンプレート) | |
二分探索操作 (ソート済み範囲用) | |
ヘッダ <algorithm> で定義 | |
指定された値より小さくない最初の要素を指すイテレータを返します (関数テンプレート) | |
指定された値より大きい最初の要素へのイテレータを返します (関数テンプレート) | |
指定範囲に要素が存在するかどうか調べます (関数テンプレート) | |
特定のキーに一致する要素の範囲を返します (関数テンプレート) | |
集合操作 (ソート済み範囲用) | |
ヘッダ <algorithm> で定義 | |
2つのソート済み範囲をマージします (関数テンプレート) | |
2つのソート済み範囲をその場でマージします (関数テンプレート) | |
ある集合が別の集合の部分集合であるかどうか調べます (関数テンプレート) | |
2つの集合の差を計算します (関数テンプレート) | |
2つの集合の交叉を計算します (関数テンプレート) | |
2つの集合の対称差を計算します (関数テンプレート) | |
2つの集合の和を計算します (関数テンプレート) | |
ヒープ操作 | |
ヘッダ <algorithm> で定義 | |
(C++11) | 指定範囲が最大ヒープであるかどうか調べます (関数テンプレート) |
(C++11) | 最大ヒープである最も大きな部分範囲を探します (関数テンプレート) |
指定範囲の要素から最大ヒープを作成します (関数テンプレート) | |
最大ヒープに要素を追加します (関数テンプレート) | |
最大ヒープから最も大きな要素を削除します (関数テンプレート) | |
最大ヒープを昇順にソートされた要素の範囲に変換します (関数テンプレート) | |
最小/最大演算 | |
ヘッダ <algorithm> で定義 | |
指定された値の大きい方を返します (関数テンプレート) | |
指定範囲の最も大きな要素を返します (関数テンプレート) | |
指定された値の小さい方を返します (関数テンプレート) | |
指定範囲の最も小さな要素を返します (関数テンプレート) | |
(C++11) | 2つの要素の小さい方と大きい方を返します (関数テンプレート) |
(C++11) | 指定範囲の最も小さな要素と最も大きな要素を返します (関数テンプレート) |
(C++17) | 値を境界値の間にクランプします (関数テンプレート) |
比較演算 | |
ヘッダ <algorithm> で定義 | |
2つの要素集合が同じかどうか調べます (関数テンプレート) | |
ある範囲が別の範囲より辞書的に小さいかどうか調べます (関数テンプレート) | |
三方比較を用いて2つの範囲を比較します (関数テンプレート) | |
順列操作 | |
ヘッダ <algorithm> で定義 | |
(C++11) | あるシーケンスが別のシーケンスの順列並び替えになっているかどうか調べます (関数テンプレート) |
指定範囲の要素より辞書的に大きな次の順列を生成します (関数テンプレート) | |
指定範囲の要素より辞書的に小さな次の順列を生成します (関数テンプレート) | |
数値演算 | |
ヘッダ <numeric> で定義 | |
(C++11) | 開始値を連続的にインクリメントして指定範囲を埋めます (関数テンプレート) |
指定範囲の要素を合計します (関数テンプレート) | |
2つの範囲の要素の内積を計算します (関数テンプレート) | |
指定範囲の隣接する要素間の差を計算します (関数テンプレート) | |
指定範囲の要素の部分和を計算します (関数テンプレート) | |
(C++17) | std::accumulate と同様ですが、計算順序は不定です (関数テンプレート) |
(C++17) | std::inclusive_scan と同様ですが、 i 番目の合計に i 番目の要素が含まれません (関数テンプレート) |
(C++17) | std::partial_sum と同様ですが、計算順序は不定です (関数テンプレート) |
(C++17) | 不定の計算順序で、関数オブジェクトを適用した結果を reduce します (関数テンプレート) |
(C++17) | 関数オブジェクトを適用した結果に対して exclusive scan を計算します (関数テンプレート) |
(C++17) | 関数オブジェクトを適用した結果に対して inclusive scan を計算します (関数テンプレート) |
未初期化記憶域の操作 |
ヘッダ <memory> で定義 | |
指定範囲のオブジェクトをメモリの未初期化領域にコピーします (関数テンプレート) | |
(C++11) | 指定個数のオブジェクトをメモリの未初期化領域にコピーします (関数テンプレート) |
1個のオブジェクトをメモリの未初期化領域の指定範囲にコピーします (関数テンプレート) | |
1個のオブジェクトをメモリの未初期化領域に指定個数コピーします (関数テンプレート) | |
(C++17) | 指定範囲のオブジェクトをメモリの未初期化領域にムーブします (関数テンプレート) |
(C++17) | 指定個数のオブジェクトをメモリの未初期化領域にムーブします (関数テンプレート) |
オブジェクトをデフォルト初期化によりメモリの未初期化領域の指定範囲に構築します (関数テンプレート) | |
オブジェクトをデフォルト初期化によりメモリの未初期化領域に指定個数構築します (関数テンプレート) | |
オブジェクトを値初期化によりメモリの未初期化領域の指定範囲に構築します (関数テンプレート) | |
オブジェクトを値初期化によりメモリの未初期化領域に指定個数構築します (関数テンプレート) | |
(C++17) | 指定されたアドレスにあるオブジェクトを破棄します (関数テンプレート) |
(C++17) | 指定範囲のオブジェクトを破棄します (関数テンプレート) |
(C++17) | 指定個数のオブジェクトを破棄します (関数テンプレート) |
C のライブラリ | |
ヘッダ <cstdlib> で定義 | |
指定範囲の不特定な型の要素をソートします (関数) | |
不特定な型の要素を指定の配列から探します (関数) |
[編集]関連項目
アルゴリズム の C言語リファレンス |