Sdílet prostřednictvím


<algorithm>

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

namespace std {
template<class InputIterator, class Predicate>
    bool all_of (
        InputIterator _First, 
        InputIterator _Last,
        Predicate _Pred
    );
template<class InputIterator, class Predicate>
    bool any_of (
        InputIterator _First, 
        InputIterator _Last,
        Predicate _Pred
    );
template<class InputIterator, class Predicate>
    bool none_of (
        InputIterator _First, 
        InputIterator _Last,
        Predicate _Pred
    );
template<class InputIterator, class Function>
    Fn1 for_each (
        InputIterator _First, 
        InputIterator _Last, 
        Function _Func
    );
template<class InputIterator, class Type>
    InputIterator find (
        InputIterator _First, 
        InputIterator _Last, 
        const Type& _Val
    );
template<class InputIterator, class Predicate>
    InputIterator find_if (
        InputIterator _First, 
        InputIterator _Last, 
        Predicate _Pred
    );
template<class InputIterator, class Predicate>
    InputIterator find_if_not (
        InputIterator _First, 
        InputIterator _Last,
        Predicate _Pred
    ); 
template<class ForwardIterator1, class ForwardIterator2>
    ForwardIterator1 find_end (
        ForwardIterator1 _First1, 
        ForwardIterator1 _Last1,
        ForwardIterator2 _First2, 
        ForwardIterator2 _Last2
    );
template<class ForwardIterator1, class ForwardIterator2, 
         class Predicate>
    ForwardIterator1 find_end (
        ForwardIterator1 _First1, 
        ForwardIterator1 _Last1,
        ForwardIterator2 _First2, 
        ForwardIterator2 _Last2, 
        Predicate _Pred
    );
template<class InputIterator, class ForwardIterator>
    InputIterator1 find_first_of (
        InputIterator _First1, 
        InputIterator _Last1,
        ForwardIterator _First2, 
        ForwardIterator _Last2
    );
template<class InputIterator, class ForwardIterator, 
         class Predicate>
    InputIterator1 find_first_of (
        InputIterator _First1, 
        InputIterator _Last1,
        ForwardIterator _First2, 
        ForwardIterator _Last2, 
        Predicate _Pred
    );
template<class ForwardIterator>
    ForwardIterator adjacent_find (
        ForwardIterator _First, 
        ForwardIterator _Last
    );
template<class ForwardIterator, class Predicate>
    ForwardIterator adjacent_find (
        ForwardIterator _First, 
        ForwardIterator _Last, 
        Predicate _Pred
    );
template<class InputIterator, class Type>
    typename iterator_traits<InputIterator>::difference_type
        count (
            InputIterator _First, 
            InputIterator _Last,
            const Type& _Val
        );
template<class InputIterator, class Predicate>
    typename iterator_traits<InputIterator>::difference_type
        count_if (
            InputIterator _First, 
            InputIterator _Last,
            Predicate _Pred
        );
template<class InputIterator1, class InputIterator2>
    pair<InputIterator1, InputIterator2> 
        mismatch (
            InputIterator1 _First1, 
            InputIterator1 _Last1,
            InputIterator2 _First2
        );
template<class InputIterator1, class InputIterator2, class Predicate>
    pair<InputIterator1, InputIterator2> 
        mismatch (
            InputIterator1 _First1, 
            InputIterator1 _Last1,
            InputIterator2 _First2, 
            Predicate _Pred
        );
template<class InputIterator1, class InputIterator2>
    bool equal (
        InputIterator1 _First1, 
        InputIterator1 _Last1, 
        InputIterator2 _First2
    );
template<class InputIterator1, class InputIterator2, class Predicate>
    bool equal (
        InputIterator1 _First1, 
        InputIterator1 _Last1, 
        InputIterator2 _First2, 
        Predicate _Pred
    );
template<class ForwardIterator1, class ForwardIterator2>
    ForwardIterator1 search (
        ForwardIterator1 _First1, 
        ForwardIterator1 _Last1,
        ForwardIterator2 _First2, 
        ForwardIterator2 _Last2
    );
template<class ForwardIterator1, class ForwardIterator2, 
         class Predicate>
    ForwardIterator1 search (
        ForwardIterator1 _First1, 
        ForwardIterator1 _Last1,
        ForwardIterator2 _First2, 
        ForwardIterator2 _Last2, 
        Predicate _Pred
    );
template<class ForwardIterator, class Size, class Type>
    ForwardIterator search_n (
        ForwardIterator _First, 
        ForwardIterator _Last,
        Size _Count, 
        const Type& _Val
    );
template<class ForwardIterator, class Size, class Type, 
         class Predicate>
    ForwardIterator search_n (
        ForwardIterator _First, 
        ForwardIterator _Last,
        Size _Count, 
        const Type& _Val, 
        Predicate _Pred
    );

Poznámky

Algoritmy STL jsou obecné, protože pracují v různých datových struktur.Datové struktury, které pracují na zahrnout nejen tříd STL kontejneru jako vector a list, ale také program definovaných datových struktur a matice prvků, které splňují požadavky zejména algoritmus.Algoritmy STL dosáhnout neporuší tuto úroveň přístupu a křížení prvky kontejneru nepřímo prostřednictvím u iterátorů.

Algoritmy STL zpracovat iterační oblastí, které jsou obvykle určeny jejich počáteční nebo koncový pozic.Uvedené rozsahy musí být platný v tom smyslu, že musí být všechny ukazatele v oblasti dereferenceable a v rámci posloupnosti každou oblast musí být dostupná z první poslední pozice ve incrementation.

Algoritmy STL akcí podporovaných operací a funkcí členů každého kontejneru STL rozšířit a umožnit práci, například různé typy kontejneru objektů současně.Vyjádřit informace o účelu algoritmy byly použity dvě přípony.

  • Pokud příponu znamená, že je použit algoritmus s objekty funkce pracující na hodnoty prvků místo hodnoty prvky samotné.find_if Algoritmus hledá prvky, jejichž hodnoty splňují kritérium určený objekt funkce a find algoritmus hledá určitou hodnotu.

  • Přípona _copy označuje, že algoritmus nejen zpracovává hodnoty prvků, ale také zkopíruje změny hodnot do cílové oblasti.reverse Algoritmus obrátí pořadí prvků v určité oblasti a reverse_copy algoritmus výsledek také zkopíruje do cílové oblasti.

Algoritmy STL často dělí do skupin, které něco indikují o jejich účelu nebo požadavky.Patří úprava algoritmů, které změnit hodnotu v porovnání s nonmodifying algoritmy, které nejsou prvky.Mutating algoritmy změnit pořadí prvků, ale nikoli hodnoty jejich prvků.Odebrání algoritmy vyloučit prvky z rozsah nebo kopie oblast.Algoritmy řazení pořadí prvků v rozsahu různými způsoby a algoritmy seřazené oblasti jednat pouze algoritmy, jejíž prvky jsou seřazeny určitým způsobem.

STL číselné algoritmy, které jsou k dispozici pro zpracování číselných mají své vlastní záhlaví souboru <numeric>, a funkce objektů a adaptéry jsou definovány v záhlaví <functional> objekty funkce vracející booleovské hodnoty jsou známé jako predikáty.Výchozí binárního predikátu je srovnání operator<.Obecně prvky právě objednávané musí být menší než srovnatelné, takže uvedeny jakékoli dva prvky, může být určen buď jsou rovnocenné (v tom smyslu, že ani menší než ostatní) nebo že je menší než ostatní.Výsledkem objednání mezi nonequivalent prvky.

yah1y2x8.collapse_all(cs-cz,VS.110).gifFunkce

adjacent_find

Hledá dvě sousedící prvky, které jsou rovny nebo splňují zadanou podmínku.

all_of

Vrátí true při podmínka je přítomen každý prvek v daném rozsahu.

any_of

Vrátí true při podmínka je přítomna alespoň jednou v určeném rozsahu prvků.

binary_search

Ověřuje, zda je prvek v seřazené oblasti, která se rovná zadané hodnotě nebo je rovnocenné ve smyslu, určené binárního predikátu.

Kopírovat

Přiřadí hodnoty prvků ze zdrojové oblasti cílová oblast iterace zdroj posloupnost prvků a jejich nové pozice ve směru vpřed.

copy_backward

Přiřadí hodnoty prvků ze zdrojové oblasti cílová oblast iterace zdroj posloupnost prvků a jejich nové pozice směrem dozadu.

copy_if

Kopírovat všechny prvky v dané oblasti, které test true pro zadanou podmínku.

copy_n

Kopíruje zadaný počet prvků.

počet

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

count_if

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

rovná

Porovná dva rozsahy element po elementu pro rovné nebo rovnocennosti v smyslu určené binárního predikátu.

equal_range

Najde pár pozic v rozsahu objednané, první menší než nebo odpovídající Zadaný prvek a druhé poloze větší než umístění prvku, kde lze zadat představu o rovnocennosti nebo použity k určení polohy v pořadí řazení binárního predikátu.

výplň

Každý prvek v dané oblasti přiřadí stejné novou hodnotu.

fill_n

Zadaný počet prvků v rozsahu od určitého přiřadí novou hodnotu.

Najít

Pozice prvního výskytu elementu vyhledá v rozsahu, který obsahuje určitou hodnotu.

find_end

Vyhledá v rozsahu pro poslední subsequence, které odpovídá zadanému pořadí nebo rovnocenné ve smyslu, určené binárního predikátu.

find_first_of

Hledání pro první výskyt několika hodnot v cílové oblasti nebo pro první výskyt některé z několika prvků, které jsou rovnocenné ve smyslu, určené na zadanou sadu prvků binárního predikátu.

find_if

Pozice prvního výskytu elementu vyhledá v rozsahu, který splňuje zadané podmínky.

find_if_not

Vrátí první prvek zadaný rozsah, který nesplňuje podmínku.

for_each

Zadanou funkci objektu platí pro každý prvek v pořadí vpřed v oblasti a vrací objekt funkce.

Generovat

Přiřadí hodnoty generované funkce objektu pro každý prvek v oblasti.

generate_n

Přiřadí hodnoty generované pomocí funkce objekt zadaný počet prvků je oblast a vrátí jednu pozici za poslední přiřazenou hodnotu.

zahrnuje

Testuje všechny prvky obsažené ve druhém seřazené oblasti, kde lze zadat kritéria řazení nebo rovnocennosti mezi prvky binárního predikátu obsahuje jeden seřazené oblasti.

inplace_merge

Kombinuje prvky ze dvou po sobě následujících oblastí seřazené do jediného seřazené oblasti, kde lze zadat kritéria řazení binárního predikátu.

is_heap

Vrátí true Pokud prvky v určeném rozsahu formuláře haldu.

is_heap_until

Vrátí true Pokud zadaná oblast tvoří haldu až do posledního prvku.

is_partitioned

Vrátí true Pokud všechny prvky v daném rozsahu, test true pro podmínku předcházet všechny prvky, které test false.

is_sorted

Vrátí true Pokud jsou prvky v určeném rozsahu v seřazeném pořadí.

is_sorted_until

Vrátí true Pokud jsou prvky v určeném rozsahu v seřazeném pořadí.

iter_swap

Výměny dvou hodnot podle dvojici zadané u iterátorů.

lexicographical_compare

Porovná element po elementu mezi dvě sekvence zjistit, která je nižší z těchto dvou.

lower_bound

Vyhledá první prvek pozice v objednané rozsah, který má hodnotu větší než nebo rovna zadané hodnotě, kde lze zadat kritéria řazení binárního predikátu.

make_checked_array_iterator

Vytvoří checked_array_iterator , lze použít jiné algoritmy.

make_heap

Převede prvky ze zadaného rozsahu haldy, což je největší první prvek a pro které kritérium třídění může být určena pomocí binárního predikátu.

Max

Porovná dva objekty a vrátí větší ze dvou, kde lze zadat kritéria řazení binárního predikátu.

max_element

Nalezne první výskyt největší prvek v dané oblasti, kde lze zadat kritéria řazení binárního predikátu.

sloučení

Spojuje všechny prvky ze dvou oblastí seřazené zdroje do jednoho, seřazené cílové oblasti, kde lze zadat kritéria řazení binárního predikátu.

min

Porovná dva objekty a vrátí menší z obou, kde lze zadat kritéria řazení binárního predikátu.

min_element

Nalezne první výskyt nejmenší prvek v dané oblasti, kde lze zadat kritéria řazení binárního predikátu.

minmax

Porovná dva vstupní parametry a vrátí jim jako dvojice v pořadí nejméně nejvyšší.

minmax_element

Vykonává práci provedenou min_element a max_element v jednom volání.

Neshoda

Porovná dva rozsahy element po elementu pro rovnost nebo ekvivalent v určeném binárního predikátu smyslu a vyhledá první místo, kde dochází k rozdílu.

<alg> move

Přesunete prvky spojené s zadaný rozsah.

move_backward

Přesune prvky iterační jeden do druhého.Přesunutí začíná poslední prvek v dané oblasti a končí první prvek v dané oblasti.

next_permutation

Seřadí prvky v rozsahu tak, aby původní pořadí lexicographically další větší Permutace nahrazuje, existuje, kde lze zadat smyslu další s binárního predikátu.

none_of

Vrátí true při podmínku je nikdy mezi prvky v daném rozsahu.

nth_element

Rozsah prvky správně vyhledání oddílů nth element sekvence v rozsahu tak, aby všechny prvky před něj jsou menší než nebo je rovno a všechny prvky, které následují v pořadí jsou větší než nebo je rovno.

partial_sort

Uspořádá zadaný počet menších prvků v rozsahu do nondescending pořadí nebo objednávání kritérium určený binárního predikátu.

partial_sort_copy

Zkopíruje prvky ze zdrojové oblasti do cílové oblasti, kde jsou zdroje prvky uspořádány podle buď menší než nebo jiného binárního predikátu.

oddíl

Klasifikuje prvky v rozsahu do dvou sad nesouvislý, s těmi prvky splňující, které je nesplňují předchozí unárního predikátu.

partition_copy

Zkopíruje prvky, pro které je podmínkou true na jeden cíl a pro které podmínku false do jiného.Prvky musí pocházet ze zadaného rozsahu.

partition_point

Vrátí první prvek v daném rozsahu, který nesplňuje podmínku.Prvky jsou seřazeny tak, aby ty, které splňují podmínku přijít dříve než ty, které nemají.

pop_heap

Největší prvek odebere z přední haldu další na poslední pozici v rozsahu a pak tvoří nové haldy z ostatních prvků.

prev_permutation

Seřadí prvky v rozsahu tak, aby původní pořadí lexicographically další větší Permutace nahrazuje, existuje, kde lze zadat smyslu další s binárního predikátu.

push_heap

Přidá prvek, který je na konci oblasti tak, aby stávající haldy sestávající z předchozí prvky v oblasti.

random_shuffle

Změní uspořádání sekvence n prvky v rozsahu do jednoho z n!náhodně vybrané možná opatření.

odebrat

Odstraní zadanou hodnotu z dané oblasti bez narušení pořadí zbývajících prvků a vrácení konec nové oblasti prosté zadanou hodnotu.

remove_copy

Kopie prvky ze zdroje v rozsahu do cílové oblasti s výjimkou, že prvky zadanou hodnotu nejsou zkopírovány bez narušení pořadí zbývající prvky a vrácení konec nové cílové oblasti.

remove_copy_if

Kopie prvky ze zdrojové oblasti s cílem rozsahu, s výjimkou splňující predikát nejsou zkopírovány bez narušení pořadí zbývající prvky a vrácení konec nové cílové oblasti.

remove_if

Eliminuje prvky, které splňují predikát z dané oblasti bez narušení pořadí zbývajících prvků a vrácení konec nové oblasti prosté zadanou hodnotu.

nahradit

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

replace_copy

Zkoumá každý prvek ve zdrojové oblasti a nahradí jej Pokud při kopírování do nové cílové oblasti Výsledek odpovídá zadané hodnotě.

replace_copy_if

Zkoumá každý prvek ve zdrojové oblasti a nahradí ji splňuje zadané predikát při kopírování výsledek do nové cílové oblasti.

replace_if

Zkoumá každý prvek v oblasti a nahradí ji splňuje zadané predikátu.

zpětné

Změní pořadí prvků v rozsahu.

reverse_copy

Při kopírování do cílové oblasti se obrátí pořadí prvků ve zdrojové oblasti

Otočit

Výměny prvky ve dvou sousedních oblastí.

rotate_copy

Prvky ve dvou sousedních oblastí ve zdrojové oblasti výměny a výsledek zkopíruje do cílové oblasti.

hledání

Vyhledá první výskyt sledu v cílové oblasti, jehož prvky jsou rovná v daném pořadí prvků nebo jehož prvky jsou rovnocenné ve smyslu, určené binárního predikátu prvků v daném pořadí.

search_n

Vyhledá první subsequence v rozsahu, o zadaný počet prvků s určitou hodnotu nebo ve vztahu k hodnotě podle binárního predikátu.

set_difference

Všechny prvky, které patří do jedné, seřazené cílové oblasti, kde lze zadat kritéria řazení binárního predikátu seřazené jedné zdrojové oblasti, ale nikoli druhá oblast řazení zdroj jednotek.

set_intersection

Všechny prvky, které patří do jedné, seřazené cílové oblasti, kde lze zadat kritéria řazení binárního predikátu obou seřazené zdrojových oblastí jednotek.

set_symmetric_difference

Všechny prvky, které patří do jedné, ale ne obojí, seřazené zdrojových oblastí do jednoho, seřazené cílové oblasti, kde lze zadat kritéria řazení binárního predikátu jednotek.

set_union

Všechny prvky, které patří k nejméně jeden zdroj seřazené oblasti do jednoho, seřazené cílové oblasti, kde lze zadat kritéria řazení binárního predikátu jednotek.

řazení

Uspořádá prvky v určeném rozsahu do nondescending pořadí nebo objednávání kritérium určený binárního predikátu.

sort_heap

Převede haldu seřazené oblasti.

stable_partition

Klasifikuje prvky v rozsahu do dvou sad nesouvislý, s těmi prvky splňující ty, které nesplňují, zachování relativní pořadí prvků ekvivalentní předcházejících unárního predikátu.

stable_sort

Uspořádá prvky v určeném rozsahu do nondescending pořadí nebo objednávání kritérium určený binárního predikátu a zachová relativní pořadí prvků ekvivalentní.

Zaměnit

Hodnoty prvků mezi dvěma typy objektů, přiřazení obsah prvního objektu na druhý objekt a obsah druhého na první výměny.

swap_ranges

Prvky jedné oblasti s prvky jiného, rovná velikosti oblasti výměny.

transformace

Použije určenou funkci objektu každý prvek ve zdrojové oblasti nebo dvojice prvků ze dvou zdrojových oblastí a vrácené hodnoty funkce objektu se zkopíruje do cílové oblasti.

Jedinečný

Odstraní duplicitní prvky, které vzájemně sousedí v dané oblasti.

unique_copy

Kopie prvky ze zdrojové oblasti do cílové oblasti, s výjimkou duplicitní prvky, které jsou na sebe.

upper_bound

Vyhledá první prvek pozice v objednané rozsah, který má hodnotu, která je větší než zadaná hodnota, kde lze zadat kritéria řazení binárního predikátu.

Viz také

Referenční dokumentace

Bezpečnostní vlákno v Standardní knihovna C++

Standardní šablona knihovny

Další zdroje

Soubory hlaviček