Hlavičkový soubor <algorithm> ze standardní knihovny C++ deklaruje různé funkce, které provádějí algoritmické operace na kontejnerech a posloupnostech reprezentovaných iterátory.[1][2] Několik málo algoritmů je také v hlavičkovém souboru <numeric>. Všechny algoritmy jsou ve jmenném prostoru std.
<algorithm>
<numeric>
std
Jazyk C++ umožňuje stanovit politiku provádění (též zásady provádění, anglicky execution policy), která umožňuje paralelní provádění algoritmů (pomocí vláken nebo instrukcí SIMD).
Existují čtyři různé politiky provádění s různou sémantikou určující, v jakém pořadí lze přistupovat k prvkům:
sequenced_policy
parallel_policy
parallel_unsequenced_policy
unsequenced_policy
Při používání politik, které mohou vést k provádění v různých vláknech, musí programátor zajistit, aby operace prováděné funkcemi byly vláknově bezpečné,
V C++20 byly přidány algoritmy, které místo dvojic iterátorů pracují s rozsahy. Tyto funkce umožňují použít dvojici iterátor-zarážka a jsou definovány ve jmenném prostoru ranges. Tyto algoritmy nevyžadují, aby oba iterátory byly téhož typu a umožňují interoperabilitu s objekty deklarovanými v hlavičkovém souboru <ranges>, aniž by bylo nutné iterátory ručně extrahovat.
ranges
<ranges>
Zjišťují, zda je zadaný predikát pravdivý pro nějakou část objektů v rozsahu, případně vrací počet objektů, pro které je predikát pravdivý:
all_of
any_of
none_of
count
count_if
contains
Porovná zda dva rozsahy mají určitou vlastnost:
mismatch
equal
lexicographical_compare
true
contains_subrange
starts_with
ends_with
is_permutation
Najde v rozsahu první nebo poslední pozici, kde následující prvky vyhovují určitému predikátu
find
find_if
find_if_not
find_last
find_last_if
find_last_if_not
find_end
find_first_of
adjacent_find
search
search_n
partition_point
Poskytuje operace binárního vyhledávání pro rozsahy. Pro rozsahy, které nejsou setříděné, je výsledek nedefinovaný.
binary_search
upper_bound
lower_bound
equal_range
Vyhledá v rozsahu nejmenší nebo největší prvek podle zadaného predikátu porovnání:
max_element
min_element
minmax_element
Kontrolují, zda má celý rozsah určitou vlastnost:
is_partitioned
is_sorted
is_heap
Přenáší prvky z jednoho rozsahu do jiného
copy
copy_if
copy_backward
move
move_backward
reverse_copy
rotate_copy
unique_copy
sample
Přemísťuje prvky v rozsahu na místě tak, aby rozsah byl členěn podle určité vlastnosti:
unique
remove
remove_if
partition
partition_copy
stable_partition
Setřídí nebo částečně setřídí rozsah na místě:
sort
partial sort
stable_sort
nth_element
Vytvoří daný rozsah bez čtení hodnot v něm obsažených:
fill
generate
iota
Transformuje každý prvek daného rozsahu na místě:
for_each
transform
replace
replace_if
clamp
Mění pořadí prvků v rozsahu na místě:
shuffle
shift_left
shift_right
reverse
rotate
Poskytuje algoritmy pro práci s binární haldou – její vytvoření, vkládání prvků, a odstraňování prvků:
make_heap
push_heap
pop_heap
sort_heap
V tomto článku byl použit překlad textu z článku Algorithm (C++) na anglické Wikipedii.