アルゴリズムライブラリ
提供: cppreference.com
目次 |
Non-modifying sequence operations
<algorithm>内に定義されています。
all of, any of, none of | 全ての要素に対し条件式が真となる、いずれかの要素に対し条件式が真となる、いずれの要素に対して条件式が真とならないならば、trueを返す |
for_each | 範囲内の要素に関数を適用する |
count | 与えられた値とマッチする要素の数を返す |
count_if | ある条件がtrueとなる要素の数を返す |
mismatch | 2つの配列の違いがでる最初の場所を探す |
equal | 2つの要素のセットが同値か判断する |
find, find_if, find_if_not(C++11) | 条件を満たす最初の要素を見つける |
find_end | ある範囲の最後の要素を探す |
find_first_of | あるセットの要素の中でどれでも一つ探す |
adjacent_find | 同値の(あるいは他の基準を満たす)隣り合った要素を見つける |
search | 範囲内の要素を探索する |
search_n | ある範囲において、要素がn個連続する範囲の最初のイテレー��を返す |
Modifying sequence operations
<algorithm>内に定義されています。
copy, copy_if | 範囲内の要素を新しい場所にコピーする |
copy_n | n個の要素を新しい場所にコピーする |
copy_backward | 範囲内の要素を、新しい場所に逆順にコピーする |
move | 範囲内の要素をムーブする |
move_backward | 範囲内の要素を、逆順にムーブする |
fill | ある範囲に特定の値を割り当てる |
fill_n | 特定の数の要素に値を割り当てる |
transform | 範囲内の要素に関数を適用する |
generate | 範囲内の要素に関数の返り値を保存する |
generate_n | N個の要素に関数の返り値を保存する |
remove, remove_if | 条件を満たす要素を取り除く |
remove_copy, remove_copy_if | 条件を満たす要素をコピーし、コピー元から取り除く |
replace, replace_if | 条件を満たす要素を他の値へ置き換える |
replace_copy, replace_copy_if | ある値を持つ要素を別の値に置き換えて配列をコピーする |
swap | 2つのオブジェクトの値を入れ替える |
swap_ranges | 範囲内の要素を入れ替える |
iter_swap | 2つのイテレータが指す要素を入れ替える |
reverse | 範囲内の要素を逆順に並び替える |
reverse_copy | 範囲内の要素を逆順に並び替えたコピーを作る |
rotate | 範囲内の要素を与えられた数だけ左に動かす |
rotate_copy | 範囲内の要素をコピーし、与えられた数だけ左に動かす |
ramdom_shuffle, shuffle | 要素をランダムに再配置する |
unique | 範囲内において連続して重複した要素を取り除く |
unique_copy | 範囲内において連続して重複した要素を取り除き、そのコピーを作る |
Partitioning operations
<algorithm>内に定義されています。
is_partitioned | その範囲において、条件を満たすように要素が分割されているか、判定する |
partition | 範囲内の要素を2つに分割する |
stable_partition | 範囲内の要素を2つに分割する。同値な要素の順番は保持される |
partition_point | 分割点を取得する |
ソート
<algorithm>内に定義されています。
is_sorted | 範囲内の要素がソートされているか判定する |
is_sorted_until | ソートされている範囲の最後のイテレータを返す |
sort | 範囲内の要素を昇順にソートする |
partial_sort | ある範囲において、最初のN要素のみソートする |
partial_sort_copy | 範囲内の要素をコピーし部分的にソートする |
stable_sort | 範囲内の要素をソートする。同値な要素の順番は保持される |
nth_element | ある要素をソートされたときに正しい位置に挿入する。その要素よりも左側にはその値より大きな値の要素がこないようにし、逆に右側には小さな値がこないようにする |
二分木探索
<algorithm>内に定義されています。
lower_bound | ソートされた配列でその要素が昇順を崩さない最初のインデックスを探す |
upper_bound | 順序を崩さずに挿入可能な最後の位置を検索する(指定値より大きい最初の位置を返す) |
binary_search | ある範囲の中で要素があるかどうか判定する |
equal_range | ある要素とすべて同値となる範囲を探す |
ソートされた要素に対する操作
<algorithm>内に定義されています。
merge | 2つのソートされた要素をマージする |
inplace_merge | 連続したソート済みの要素をマージする |
includes | あるセットが他のセットのサブセットになっていたときにtrueを返す |
set_difference | 2つのセットの差分を出す |
set_intersection | 2つのセットの共通集合を出す |
set_symmetric_difference | 2つのセットの対象差を出す |
set_union | 2つのセットの和集合を出す |
ヒープ対する操作
<algorithm>内に定義されています。
is_heap | 範囲内の要素がヒープ構造になっている場合trueを返す |
is_heap_until | 範囲内の要素がヒープ構造になっている最後の要素を見つける |
make_heap | 範囲内の要素からヒープを作成する |
push_heap | ヒープに要素を追加する |
pop_heap | ヒープ内の最大の要素を取り除く |
sort_heap | ヒープ構造となっている要素をソートする |
最大値/最小値
<algorithm>内に定義されています。
max | 2つの要素のうち大きな方を返す |
max_element | 範囲内の最大の要素を返す |
min | 2つの要素のうち小さな方を返す |
min_element | 範囲内の最小の要素を返す |
minmax_element | 範囲内の最大値と最小値を返す |
lexicographical_compare | ある範囲が他の範囲より辞書順で早い場合trueを返す |
is_permutation | ある範囲が、他の範囲を辞書順に並べたものであるか判定する |
next_permutation | ある順列に対し、次に辞書順が早い順列を生成する |
prev_permutation | ある順列に対し、次に辞書順が遅い順列を生成する |
Numeric operations
<numeric>内に定義されています。
iota | 初期値から順次インクリメントされた値で、範囲内の要素を埋める |
accumulate | 範囲内の要素の合計を返す |
inner_product | 2つの範囲の内積を計算する |
adjacent_difference | ある範囲内において隣り合った要素間の差を計算する |
partial_sum | 範囲内の要素の部分和を計算する |
Cライブラリ
<cstdlib>内に定義されています。
qsort | 型が未定義の配列をソートする |
bsearch | 型が未定義の配列からある要素を見つける |