名前空間
変種
操作

アルゴリズムライブラリ

提供: cppreference.com
< cpp
2012年5月1日 (火) 04:09時点におけるP12 (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)

目次

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 型が未定義の配列からある要素を見つける