Sdílet prostřednictvím


<algorithm>

Definuje funkce šablony kontejneru standardní knihovny šablon (STL), které provádějí algoritmy.

(see relevant links below for specific algorithm syntax)

Poznámky

Algoritmy STL jsou obecné, protože je lze spustit na různých datových strukturách.Mezi datové struktury, na kterých lze tyto algoritmy spustit, patří nejen třídy kontejneru STL, například vector a list, ale také programem definované datové struktury a pole prvků, které splňují požadavky konkrétního algoritmu.Algoritmy STL této úrovně obecnosti dosahují přístupem k prvkům kontejneru a jejich přecházením nepřímo prostřednictvím iterátorů.

Algoritmy STL zpracovávají rozsahy iterátoru, které jsou obvykle určeny počáteční a koncovou pozicí.Tyto rozsahy musí být platné v tom smyslu, že na všechny ukazatele v rozsazích musí být možné nepřímo odkazovat a v rámci sekvencí každého rozsahu musí být poslední pozice dosažitelná z první pomocí přírůstku.

Algoritmy STL rozšiřují akce podporované operacemi a funkcemi členů každého kontejneru STL a umožňují například práci s různými typy objektů kontejnerů zároveň.K předání informací o účelu algoritmů byly použity dvě přípony.

  • _if Přípona označuje, že algoritmus použit s objekty funkce pracující na hodnotách elementy, a nikoli na hodnotách samotné prvky.Algoritmus find_if vyhledá prvky, jehož hodnoty splňují kritérium zadané objektem funkce, a algoritmus find vyhledá konkrétní hodnotu.

  • Přípona „_copy“ označuje, že algoritmus nejen manipuluje s hodnotami prvků, ale také kopíruje změněné hodnoty do cílového rozsahu.Algoritmus reverse obrátí pořadí prvků v rozsahu a algoritmus reverse_copy také zkopíruje výsledek do cílového rozsahu.

Algoritmy STL se často zařazují do skupin, které naznačují jejich účel nebo požadavky.Patří mezi ně úpravu algoritmy, které změňte hodnotu elementů ve srovnání s bez úpravy algoritmy, které nepodporují.Mutující algoritmy mění pořadí prvků, ale nikoli jejich hodnoty.Odebírající algoritmy mohou odstranit prvky z rozsahu nebo rozsah zkopírovat.Algoritmy řazení mění různými způsoby pořadí prvků v rozsahu a algoritmy seřazeného rozsahu pracují pouze s algoritmy, jejichž prvky byly seřazeny určitým způsobem.

STL číselná algoritmy, které jsou k dispozici pro číselné zpracování mají své vlastní hlavičky souboru < číselná >, a objekty funkce a adaptéry jsou definovány v hlavičce < funkční > jako predikáty jsou známé objekty funkce, které vracejí logické hodnoty.Výchozí binární predikát je operator< porovnání.Seřazované prvky musí být obecně menší než srovnatelné, což znamená, že když jsou uvedeny dva prvky, může být stanoveno, zda jsou ekvivalentní (v tom smyslu, že ani jeden není menší než ten druhý), nebo zda jeden je menší než druhý.Výsledkem je řazení mezi neekvivalentními prvky.

Funkce

adjacent_find

Vyhledá dva sousedící prvky, které jsou buď rovny, nebo splňují zadanou podmínku.

all_of

Vrátí true, pokud je u každého prvku v daném rozsahu přítomna podmínka.

any_of

Vrátí true, pokud je alespoň jednou v zadaném rozsahu prvků přítomna podmínka.

binary_search

Ověřuje, zda v seřazeném rozsahu existuje prvek, který je roven zadané hodnotě nebo je jí ekvivalentní ve smyslu určeném binárním predikátem.

copy

Přiřadí hodnoty prvků ze zdrojového rozsahu do cílového rozsahu a provede iterace přes zdrojové sekvence prvků a přiřadí je novým pozicím směrem dopředu.

copy_backward

Přiřadí hodnoty prvků ze zdrojového rozsahu do cílového rozsahu a provede iterace přes zdrojové sekvence prvků a přiřadí je novým pozicím směrem dozadu.

copy_if

Zkopíruje všechny prvky v dané oblasti, které testují true pro zadanou podmínku.

copy_n

Zkopíruje zadaný počet prvků.

count

Vrátí počet prvků v rozsahu, jejichž hodnoty odpovídají zadané hodnotě.

count_if

Vrátí počet prvků v rozsahu, jejichž hodnoty odpovídají zadané podmínce.

equal

Porovná dva rozsahy prvek podle prvku buď ke zjištění rovnosti, nebo ekvivalentnosti ve smyslu určeném binárním predikátem.

equal_range

Najde dvojici pozic v seřazeném rozsahu. První bude menší nebo rovna pozici zadaného prvku a druhá větší než pozice prvku, kde smysl ekvivalence nebo řazení použitý k určení pozic v sekvenci může být určen binárním predikátem.

fill

Každému prvku v zadaném rozsahu přiřadí stejnou novou hodnotu.

fill_n

Přiřadí novou hodnotu zadanému počtu prvků v rozsahu, který začíná konkrétním prvkem.

find

Vyhledá pozici prvního výskytu prvku v rozsahu, který má zadanou hodnotu.

find_end

Vyhledá v rozsahu poslední dílčí sekvenci, která je shodná se zadanou sekvencí nebo která je ekvivalentní ve smyslu určeném binárním predikátem.

find_first_of

Vyhledá první výskyt jedné z několika hodnot v cílovém rozsahu nebo první výskyt jednoho z několika prvků, které jsou ekvivalentní ve smyslu určeném binárním predikátem zadané sadě prvků.

find_if

Vyhledá pozici prvního výskytu prvku v rozsahu, který splňuje zadanou podmínku.

find_if_not

Vrátí první prvek v zadaném rozsahu, který nesplňuje podmínku.

for_each

Na každý prvek v pořadí dopředu v rozsahu použije zadaný objekt funkce a vrátí objekt funkce.

generate

Přiřadí hodnoty generované objektem funkce každému prvku v rozsahu.

generate_n

Přiřadí hodnoty generované objektem funkce zadanému počtu prvků v rozsahu a vrátí pozici prvku za poslední přiřazenou hodnotou.

includes

Ověřuje, zda jeden seřazený rozsah obsahuje všechny prvky obsažené ve druhém seřazeném rozsahu, kde kritérium pořadí nebo ekvivalence mezi prvky může být určeno binárním predikátem.

inplace_merge

Kombinuje prvky ze dvou po sobě následujících seřazených rozsahů do jednoho seřazeného rozsahu, kde kritérium pořadí může být určeno binárním predikátem.

is_heap

Vrátí true, pokud prvky v zadaném rozsahu tvoří haldu.

is_heap_until

Vrátí true, pokud zadaný rozsah tvoří haldu, která zahrnuje i poslední prvek.

is_partitioned

Vrátí true, pokud všechny prvky v zadaném rozsahu, které testují true pro podmínku, předcházejí prvkům, které testují false.

is_permutation

Určuje, zda elementů v daném rozsahu tvořit platný permutaci.

is_sorted

Vrátí true, pokud prvky v zadaném rozsahu jsou v seřazeném pořadí.

is_sorted_until

Vrátí true, pokud prvky v zadaném rozsahu jsou v seřazeném pořadí.

iter_swap

Vymění dvě hodnoty odkazované dvojicí zadaných iterátorů.

lexicographical_compare

Porovná prvek po prvku mezi dvěma sekvencemi k určení, která z nich je menší.

lower_bound

Najde pozici prvního prvku v seřazeném rozsahu, jehož hodnota je větší nebo rovna zadané hodnotě, kde kritérium pořadí může být určeno primárním predikátem.

make_heap

Převede prvky ze zadaného rozsahu do haldy, ve které je první prvek největší a pro kterou může být kritérium řazení určeno binárním predikátem.

max

Porovná dva objekty a vrátí větší z nich, kde kritérium pořadí může být určeno binárním predikátem.

max_element

Vyhledá první výskyt největšího prvku v zadaném rozsahu, kde kritérium pořadí může být určeno binárním predikátem.

merge

Kombinuje všechny prvky ze dvou po sobě seřazených zdrojových rozsahů do jednoho seřazeného cílového rozsahu, kde kritérium pořadí může být určeno binárním predikátem.

min

Porovná dva objekty a vrátí menší z nich, kde kritérium pořadí může být určeno binárním predikátem.

min_element

Vyhledá první výskyt nejmenšího prvku v zadaném rozsahu, kde kritérium pořadí může být určeno binárním predikátem.

minmax

Porovná dva vstupní parametry a vrátí je jako dvojici v pořadí od nejmenšího po největší.

minmax_element

Provádí práci vykonávanou min_element a max_element v jednom volání.

mismatch

Porovná dva rozsahy prvek po prvku buď ke zjištění rovnosti, nebo ekvivalence ve smyslu určeném binárním predikátem a vyhledá první pozici, kde existuje rozdíl.

<alg> move

Přesune prvky přidružené k určenému rozsahu.

move_backward

Přesune prvky jednoho iterátoru do druhého.Pohyb začíná posledním prvkem v daném rozsahu a končí prvním prvkem v daném rozsahu.

next_permutation

Znovu uspořádá prvky v rozsahu tak, aby původní pořadí bylo nahrazeno lexikograficky následující větší permutací, pokud existuje, kde význam následujícího může být určen binárním predikátem.

none_of

Vrátí true, pokud u prvků v daném rozsahu není nikdy přítomna podmínka.

nth_element

Rozdělí rozsah prvků a správně určí pozici n-tého prvku sekvence v rozsahu tak, aby všechny prvky před tímto prvkem byly menší nebo rovny a všechny prvky v sekvenci za tímto prvkem byly větší nebo rovny.

partial_sort

Uspořádá zadaný počet menších prvků v rozsahu do nesestupného pořadí nebo podle setřiďovacího kritéria určeného binárním predikátem.

partial_sort_copy

Zkopíruje prvky ze zdrojového rozsahu do cílového rozsahu, kde zdrojové prvky jsou seřazeny buď podle binárního predikátu „menší než“ nebo jiného určeného binárního predikátu.

partition

Rozdělí prvky v rozsahu do dvou oddělených sad. Prvky, které splňují unární predikát, jsou umístěny před těmi, které jej nesplňují.

partition_copy

Zkopíruje prvky, pro které je podmínka true, do jednoho cíle a prvky, pro které je podmínka false, do druhého cíle.Prvky musí pocházet ze zadaného rozsahu.

partition_point

Vrátí první prvek v zadaném rozsahu, který nesplňuje podmínku.Prvky jsou seřazeny tak, aby ty, které splňují podmínku, předcházely těm, které ji nesplňují.

pop_heap

Odstraní největší prvek z přední části haldy až do předposlední pozice v rozsahu a ze zbývajících prvků vytvoří novou haldu.

prev_permutation

Znovu uspořádá prvky v rozsahu tak, aby původní pořadí bylo nahrazeno lexikograficky následující větší permutací, pokud existuje, kde význam následujícího může být určen binárním predikátem.

push_heap

Přidá prvek, který je na konci rozsahu, do stávající haldy, která zahrnuje předchozí prvky daného rozsahu.

random_shuffle

Uspořádá sekvenci N prvky v rozsahu do jednoho z N!možná opatření náhodně vybrané.

remove

Odstraní zadanou hodnotu z daného rozsahu bez narušení pořadí zbývajících prvků a vrácení konce nového rozsahu, který neobsahuje zadanou hodnotu.

remove_copy

Zkopíruje prvky ze zdrojového rozsahu do cílového rozsahu. Prvky zadané hodnoty zkopírovány nejsou. Nenaruší pořadí zbývajících prvků a nevrátí konec nového cílového rozsahu.

remove_copy_if

Zkopíruje prvky ze zdrojového rozsahu do cílového rozsahu. Prvky splňující predikát zkopírovány nejsou. Nenaruší pořadí zbývajících prvků a nevrátí konec nového cílového rozsahu.

remove_if

Odstraní prvky, které splňují predikát, z daného rozsahu bez narušení pořadí zbývajících prvků a vrácení konce nového rozsahu, který neobsahuje zadanou hodnotu.

replace

Zkontroluje každý prvek v rozsahu a nahradí jej, pokud odpovídá zadané hodnotě.

replace_copy

Zkontroluje každý prvek ve zdrojovém rozsahu a nahradí jej, pokud při kopírování výsledku do nového cílového rozsahu odpovídá zadané hodnotě.

replace_copy_if

Zkontroluje každý prvek ve zdrojovém rozsahu a nahradí jej, pokud při kopírování výsledku do nového cílového rozsahu splňuje zadaný predikát.

replace_if

Zkontroluje každý prvek v rozsahu a nahradí jej, pokud splňuje zadaný predikát.

reverse

Obrátí pořadí prvků v rozsahu.

reverse_copy

Obrátí pořadí prvků ve zdrojovém rozsahu při kopírování do cílového rozsahu.

rotate

Vymění prvky ve dvou sousedních rozsazích.

rotate_copy

Vymění prvky ve dvou sousedních rozsazích v rámci zdrojového rozsahu a zkopíruje výsledek do cílového rozsahu.

search

Vyhledá první výskyt sekvence v cílovém rozsahu, jejíž prvky jsou rovné prvkům v dané sekvenci prvků nebo jejíž prvky jsou ekvivalentní ve smyslu určeném binárním predikátem prvkům v dané sekvenci.

search_n

Vyhledá první dílčí sekvenci v rozsahu zadaného počtu prvků s konkrétní hodnotou nebo vztahem k dané hodnotě podle binárního predikátu.

set_difference

Sjednotí všechny prvky, které patří do jednoho seřazeného zdrojového rozsahu, ale nikoli do druhého seřazeného zdrojového rozsahu, do jednoho seřazeného cílového rozsahu, kde kritérium pořadí může být určeno binárním predikátem.

set_intersection

Sjednotí všechny prvky, které náleží do obou seřazených zdrojových rozsahů, do jednoho seřazeného cílového rozsahu, kde kritérium pořadí může být určeno binárním predikátem.

set_symmetric_difference

Sjednotí všechny prvky, které náleží do jednoho, ale nikoli obou seřazených zdrojových rozsahů, do jednoho seřazeného cílového rozsahu, kde kritérium pořadí může být určeno binárním predikátem.

set_union

Sjednotí všechny prvky, které náleží alespoň do jednoho ze dvou seřazených zdrojových rozsahů, do jednoho seřazeného cílového rozsahu, kde kritérium pořadí může být určeno binárním predikátem.

sort

Uspořádá prvky v zadaném rozsahu do nesestupného pořadí nebo podle setřiďovacího kritéria určeného binárním predikátem.

náhodně

Elementy podle okolí posouvá (změní uspořádání) pro danou oblast pomocí generátor náhodné číslo.

sort_heap

Převede haldu na seřazený rozsah.

stable_partition

Rozdělí prvky v rozsahu do dvou oddělených sad. Prvky, které splňují unární predikát, jsou umístěny před těmi, které jej nesplňují. Relativní pořadí ekvivalentních prvků je zachováno.

stable_sort

Uspořádá prvky v zadaném rozsahu do nesestupného pořadí nebo podle setřiďovacího kritéria určeného binárním predikátem a zachová relativní pořadí ekvivalentních prvků.

swap

Vymění hodnoty prvků mezi dvěma typy objektů, obsah prvního objektu přiřadí ke druhému objektu a obsah druhého k prvnímu objektu.

swap_ranges

Vymění prvky z jednoho rozsahu za prvky druhého rozsahu o stejné velikosti.

transform

Aplikuje zadaný objekt funkce na každý prvek ve zdrojovém rozsahu nebo na dvojici prvků ze dvou zdrojových rozsahů a zkopíruje vrácené hodnoty objektu funkce do cílového rozsahu.

unique

Odstraní duplicitní prvky, které v zadaném rozsahu sousedí.

unique_copy

Zkopíruje prvky ze zdrojového rozsahu do cílového rozsahu s výjimkou sousedících duplicitních prvků.

upper_bound

Najde pozici prvního prvku v seřazeném rozsahu, který má hodnotu větší než zadaná hodnota, kde kritérium pořadí může být určeno binárním predikátem.

Viz také

Referenční dokumentace

Bezpečný přístup z více vláken ve standardní knihovně C++

Standardní knihovna šablon

Další zdroje

Standardní knihovna C++ – hlavičkové soubory