名前空間
変種
操作

アルゴリズムライブラリ

提供: cppreference.com
< cpp
 
 
アルゴリズムライブラリ
実行ポリシー (C++17)
非変更シーケンス操作
(C++11)(C++11)(C++11)
(C++17)
変更シーケンス操作
未初期化記憶域の操作
分割操作
ソート操作
(C++11)
二分探索操作
集合操作 (ソート済み範囲用)
ヒープ操作
(C++11)
最小/最大演算
(C++11)
(C++17)
順列
数値演算
C のライブラリ
 

アルゴリズムライブラリは要素の範囲に対して動作する様々な目的 (検索、ソート、計数、操作など) の関数を定義します。 範囲は [first, last) として定義され、 last は調査または変更する最後の要素のの要素を参照することに注意してください。

目次

制約付きアルゴリズム

C++20 ではほとんどのアルゴリズムの制約付きバージョンが名前空間 std::ranges で提供されます。 これらのアルゴリズムでは、範囲は IteratorSentinel の組としてまたは単一の Range 引数として指定することができ、射影とメンバポインタの callable がサポートされます。 さらに、ほとんどのアルゴリズムの戻り値の型はアルゴリズムの実行中に計算される役に立つかもしれないすべての情報を返すように変更されています。

ヘッダ <iterator> は共通アルゴリズム操作を制約付きにすることを容易にするために設計されたコンセプトおよび関連ユーティリティのセットを提供します。

(C++20以上)


実行ポリシー

ほとんどのアルゴリズムには実行ポリシーを受け取るオーバーロードがあります。 標準ライブラリのアルゴリズムは3つの実行ポリシー sequential, parallel, parallel+vector をサポートしており、対応する実行ポリシーの型とオブジェクトが提供されます。 ユーザは対応する型の実行ポリシーオブジェクト std::execution::seq, std::execution::par, std::execution::par_unseq のいずれかを指定して並列アルゴリズムを呼び出すことで、実行ポリシーを静的に選択できます。

標準ライブラリの実装は拡張として追加の実行ポリシーを定義している場合があります。 処理系定義型の実行ポリシーオブジェクトを指定して並列アルゴリズムを呼び出した場合のセマンティクスは処理系定義です。

ヘッダ <execution> で定義
名前空間 std::execution で定義
実行ポリシーの型
(クラス) [edit]
(C++17)(C++17)(C++17)
グローバルな実行ポリシーオブジェクト
(定数) [edit]
名前空間 std で定義
クラスが実行ポリシーを表すかどうか調べます
(クラステンプレート) [edit]
(C++17以上)
非変更シーケンス操作
ヘッダ <algorithm> で定義
(C++11)(C++11)(C++11)
述語が指定範囲の要素のすべてに対して true を返すかどうか、いずれかに対して true を返すかどうか、またはいずれに対しても true を返さないかどうか、調べます
(関数テンプレート) [edit]
指定範囲の要素に関数を適用します
(関数テンプレート) [edit]
指定個数の要素に関数を適用します
(関数テンプレート) [edit]
一定の基準を満たす要素の数を返します
(関数テンプレート) [edit]
2つの範囲が異なる最初の位置を探します
(関数テンプレート) [edit]
一定の基準を満たす最初の要素を探します
(関数テンプレート) [edit]
指定された要素の並びが現れる最後の位置を探します
(関数テンプレート) [edit]
指定された要素のいずれかが現れる位置を探します
(関数テンプレート) [edit]
同じ要素 (または指定された述語を満たす要素) 2つが隣接している最初の位置を探します
(関数テンプレート) [edit]
指定範囲の要素に対して検索を行います
(関数テンプレート) [edit]
指定個数の連続する指定要素を指定範囲から検索します
(関数テンプレート) [edit]
変更シーケンス操作
ヘッダ <algorithm> で定義
指定範囲の要素を新しい位置にコピーします
(関数テンプレート) [edit]
(C++11)
指定個数の要素を新しい位置にコピーします
(関数テンプレート) [edit]
指定範囲の要素を後ろからコピーします
(関数テンプレート) [edit]
(C++11)
指定範囲の要素を新しい位置にムーブします
(関数テンプレート) [edit]
指定範囲の要素を後ろからムーブします
(関数テンプレート) [edit]
指定された要素を範囲内の全要素にコピー代入します
(関数テンプレート) [edit]
指定された要素を指定個数の要素にコピー代入します
(関数テンプレート) [edit]
指定範囲の要素に関数を適用します
(関数テンプレート) [edit]
関数を連続的に呼び出した結果を指定範囲の全要素に代入します
(関数テンプレート) [edit]
関数を連続的に呼び出した結果を指定個数の要素に代入します
(関数テンプレート) [edit]
一定の基準を満たす要素を削除します
(関数テンプレート) [edit]
指定範囲の要素から一定の基準を満たすものを除いてコピーします
(関数テンプレート) [edit]
一定の基準を満たすすべての値を別の値に置き換えます
(関数テンプレート) [edit]
一定の基準を満たす要素を別の値に置き換えながら指定範囲をコピーします
(関数テンプレート) [edit]
2つのオブジェクトの値を入れ替えます
(関数テンプレート) [edit]
2つの範囲の要素を入れ替えます
(関数テンプレート) [edit]
2つのイテレータが指す要素を入れ替えます
(関数テンプレート) [edit]
指定範囲の要素の順序を反転させます
(関数テンプレート) [edit]
指定範囲の要素の順序を反転させたコピーを作成します
(関数テンプレート) [edit]
指定範囲の要素の順序を回転させます
(関数テンプレート) [edit]
指定範囲の要素の順序を回転させたコピーを作成します
(関数テンプレート) [edit]
範囲内の要素をシフトします
(関数テンプレート) [edit]
(C++17未満)(C++11)
指定範囲の要素をランダムに並べ替えます
(関数テンプレート) [edit]
(C++17)
指定個数の要素をランダムに選択します
(関数テンプレート) [edit]
指定範囲の連続している重複要素を削除します
(関数テンプレート) [edit]
指定範囲の要素の連続している重複要素が含まれないコピーを作成します
(関数テンプレート) [edit]
分割操作
ヘッダ <algorithm> で定義
指定範囲が指定した述語で分割されているかどうか調べます
(関数テンプレート) [edit]
指定範囲の要素を2つのグループに分割します
(関数テンプレート) [edit]
指定範囲の要素を2つのグループに分割しながらコピーします
(関数テンプレート) [edit]
相対的な順序を維持しながら要素を2つのグループに分割します
(関数テンプレート) [edit]
分割された範囲の分割点を探します
(関数テンプレート) [edit]
ソート操作
ヘッダ <algorithm> で定義
(C++11)
指定範囲が昇順にソートされているか調べます
(関数テンプレート) [edit]
最も大きなソート済みの部分範囲を探します
(関数テンプレート) [edit]
指定範囲を昇順にソートします
(関数テンプレート) [edit]
指定範囲の最初の N 個の要素をソートします
(関数テンプレート) [edit]
指定範囲の最初の N 個の要素がソートされたコピーを作成します
(関数テンプレート) [edit]
等しい要素間の順序を維持しながら指定範囲の要素をソートします
(関数テンプレート) [edit]
指定された要素で分割されるように指定範囲を部分ソートします
(関数テンプレート) [edit]
二分探索操作 (ソート済み範囲用)
ヘッダ <algorithm> で定義
指定された値より小さくない最初の要素を指すイテレータを返します
(関数テンプレート) [edit]
指定された値より大きい最初の要素へのイテレータを返します
(関数テンプレート) [edit]
指定範囲に要素が存在するかどうか調べます
(関数テンプレート) [edit]
特定のキーに一致する要素の範囲を返します
(関数テンプレート) [edit]
集合操作 (ソート済み範囲用)
ヘッダ <algorithm> で定義
2つのソート済み範囲をマージします
(関数テンプレート) [edit]
2つのソート済み範囲をその場でマージします
(関数テンプレート) [edit]
ある集合が別の集合の部分集合であるかどうか調べます
(関数テンプレート) [edit]
2つの集合の差を計算します
(関数テンプレート) [edit]
2つの集合の交叉を計算します
(関数テンプレート) [edit]
2つの集合の対称差を計算します
(関数テンプレート) [edit]
2つの集合の和を計算します
(関数テンプレート) [edit]
ヒープ操作
ヘッダ <algorithm> で定義
(C++11)
指定範囲が最大ヒープであるかどうか調べます
(関数テンプレート) [edit]
最大ヒープである最も大きな部分範囲を探します
(関数テンプレート) [edit]
指定範囲の要素から最大ヒープを作成します
(関数テンプレート) [edit]
最大ヒープに要素を追加します
(関数テンプレート) [edit]
最大ヒープから最も大きな要素を削除します
(関数テンプレート) [edit]
最大ヒープを昇順にソートされた要素の範囲に変換します
(関数テンプレート) [edit]
最小/最大演算
ヘッダ <algorithm> で定義
指定された値の大きい方を返します
(関数テンプレート) [edit]
指定範囲の最も大きな要素を返します
(関数テンプレート) [edit]
指定された値の小さい方を返します
(関数テンプレート) [edit]
指定範囲の最も小さな要素を返します
(関数テンプレート) [edit]
(C++11)
2つの要素の小さい方と大きい方を返します
(関数テンプレート) [edit]
指定範囲の最も小さな要素と最も大きな要素を返します
(関数テンプレート) [edit]
(C++17)
値を境界値の間にクランプします
(関数テンプレート) [edit]
比較演算
ヘッダ <algorithm> で定義
2つの要素集合が同じかどうか調べます
(関数テンプレート) [edit]
ある範囲が別の範囲より辞書的に小さいかどうか調べます
(関数テンプレート) [edit]
三方比較を使用して2つの値を比較します
(関数テンプレート) [edit]
三方比較を使用して2つの範囲を比較します
(関数テンプレート) [edit]
順列操作
ヘッダ <algorithm> で定義
あるシーケンスが別のシーケンスの順列並び替えになっているかどうか調べます
(関数テンプレート) [edit]
指定範囲の要素より辞書的に大きな次の順列を生成します
(関数テンプレート) [edit]
指定範囲の要素より辞書的に小さな次の順列を生成します
(関数テンプレート) [edit]
数値演算
ヘッダ <numeric> で定義
(C++11)
開始値を連続的にインクリメントして指定範囲を埋めます
(関数テンプレート) [edit]
指定範囲の要素を合計します
(関数テンプレート) [edit]
2つの範囲の要素の内積を計算します
(関数テンプレート) [edit]
指定範囲の隣接する要素間の差を計算します
(関数テンプレート) [edit]
指定範囲の要素の部分和を計算します
(関数テンプレート) [edit]
(C++17)
std::accumulate と同様ですが、計算順序は不定です
(関数テンプレート) [edit]
std::inclusive_scan と同様ですが、 i 番目の合計に i 番目の要素が含まれません
(関数テンプレート) [edit]
std::partial_sum と同様ですが、計算順序は不定です
(関数テンプレート) [edit]
不定の計算順序で、関数オブジェクトを適用した結果を reduce します
(関数テンプレート) [edit]
関数オブジェクトを適用した結果に対して exclusive scan を計算します
(関数テンプレート) [edit]
関数オブジェクトを適用した結果に対して inclusive scan を計算します
(関数テンプレート) [edit]
未初期化記憶域の操作
ヘッダ <memory> で定義
指定範囲のオブジェクトをメモリの未初期化領域にコピーします
(関数テンプレート) [edit]
指定個数のオブジェクトをメモリの未初期化領域にコピーします
(関数テンプレート) [edit]
1個のオブジェクトをメモリの未初期化領域の指定範囲にコピーします
(関数テンプレート) [edit]
1個のオブジェクトをメモリの未初期化領域に指定個数コピーします
(関数テンプレート) [edit]
指定範囲のオブジェクトをメモリの未初期化領域にムーブします
(関数テンプレート) [edit]
指定個数のオブジェクトをメモリの未初期化領域にムーブします
(関数テンプレート) [edit]
オブジェクトをデフォルト初期化によりメモリの未初期化領域の指定範囲に構築します
(関数テンプレート) [edit]
オブジェクトをデフォルト初期化によりメモリの未初期化領域に指定個数構築します
(関数テンプレート) [edit]
オブジェクトを値初期化によりメモリの未初期化領域の指定範囲に構築します
(関数テンプレート) [edit]
オブジェクトを値初期化によりメモリの未初期化領域に指定個数構築します
(関数テンプレート) [edit]
指定されたアドレスにあるオブジェクトを破棄します
(関数テンプレート) [edit]
(C++17)
指定範囲のオブジェクトを破棄します
(関数テンプレート) [edit]
(C++17)
指定個数のオブジェクトを破棄します
(関数テンプレート) [edit]
C のライブラリ
ヘッダ <cstdlib> で定義
指定範囲の不特定な型の要素をソートします
(関数) [edit]
不特定な型の要素を指定の配列から探します
(関数) [edit]


[編集] 関連項目

アルゴリズムC言語リファレンス