Udostępnij za pośrednictwem


<algorithm>

Określa standardowy szablon biblioteki (STL) kontenera szablonu funkcji, które wykonują algorytmów.

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
    );

Uwagi

Algorytmy STL są ogólne, ponieważ mogą one działać na różnych struktur danych.Struktury danych, które mogą one działać na obejmują nie tylko klasami STL kontenera takie jak vector i list, ale również struktur danych zdefiniowanych przez program i tablice elementów, które spełniają wymogi określonego algorytmu.Algorytmy STL osiągnąć tego poziomu ogólności przez dostęp i przechodzenie do elementów kontenera pośrednio poprzez Iteratory.

Algorytmy STL procesu iteratora zakresów, które zazwyczaj są określone przez ich początkową lub końcową pozycji.Zakresy określone muszą być prawidłowe w tym sensie, że wszystkie wskaźniki w zakresach muszą być dereferenceable i w ramach sekwencji każdego zakresu, ostatniej pozycji musi być osiągalny od pierwszego przez incrementation.

Algorytmy STL rozszerzenia działań wspieranych przez operacje i funkcji elementów członkowskich każdego kontenera STL i umożliwienia pracy, na przykład z różnymi typami obiektów kontenera, w tym samym czasie.Sufiksy dwa były używane do przekazywania informacji o celu algorytmów.

  • Jeśli sufiks wskazuje, że algorytm jest używany w funkcji obiektów działających wartości elementów, a nie wartości ze sobą elementy.find_if Algorytm szuka elementów, których wartości spełniają kryterium określonym przez obiekt funkcji i find algorytm wyszukiwania dla określonej wartości.

  • Sufiks _copy wskazuje, że algorytm nie tylko manipuluje wartości elementów, ale także skopiowanie zmodyfikowane wartości do zakresu docelowego.reverse Algorytm Odwraca kolejność elementów w zakresie i reverse_copy algorytm kopiuje również wynik do zakresu docelowego.

Algorytmy STL często klasyfikuje się w grupy, które wskazują coś o ich cel lub wymagań.Należą do modyfikowania algorytmów, które zmiany wartości elementów stosunku nonmodifying algorytmów, które nie.Algorytmy szybkich mutacji zmienić kolejność elementów, lecz nie wartości ich elementów.Usuwanie algorytmów można wyeliminować elementy z zakresu lub kopiowania zakresu.Algorytmy sortowania kolejność elementów w zakresie na różne sposoby i algorytmy sortowanym zakresie tylko działają na algorytmy, którego elementy zostały posortowane w określony sposób.

Algorytmy numeryczne STL, dostarczane dla numeryczny przetwarzania mają własne nagłówka pliku <numeric>, i funkcji obiektów i adaptery są zdefiniowane w nagłówku <functional> obiektów funkcji, które zwracają wartości logicznych są znane jako predykatów.Domyślne predykatu dwuelementowego jest porównanie operator<.Ogólnie rzecz biorąc elementy są uporządkowane muszą być mniej niż porównywalne tak, że biorąc pod uwagę dwa elementy, można go określona albo są równoważne (w tym sensie, że nie jest mniejsza niż drugi) lub jeden jest mniej niż inne.Powoduje porządkowanie elementów nonequivalent.

yah1y2x8.collapse_all(pl-pl,VS.110).gifFunkcje

adjacent_find

Wyszukuje dwóch sąsiadujących elementów, które są równe lub spełniają określony warunek.

all_of

Zwraca true gdy warunek jest obecny w każdy element z podanego zakresu.

any_of

Zwraca true gdy warunek jest obecny co najmniej raz w określonym zakresie elementów.

binary_search

Sprawdza, czy istnieje element w sortowanym zakresie jest równa określonej wartości lub jest równoważne w znaczeniu określonym przez predykatu dwuelementowego.

Kopiuj

Przypisuje wartości elementów z zakresu źródłowego zakres docelowy, iteracja źródła sekwencja elementów i przypisywanie im nowych stanowisk w kierunku do przodu.

copy_backward

Przypisuje wartości elementów z zakresu źródłowego zakres docelowy, iteracja źródła sekwencja elementów i przypisywanie im nowych stanowisk w kierunku do tyłu.

copy_if

Skopiuj wszystkie elementy w danym zakresie, że true dla określonego warunku

copy_n

Kopiuje określoną liczbę elementów.

Licznik

Zwraca liczbę elementów w zakresie, w których wartości odpowiadają określonej wartości.

count_if

Zwraca liczbę elementów w zakresie, w których wartości spełniają określony warunek.

równe

Porównuje dwa zakresy elementów dla równości lub równoważności w znaczeniu określonym przez predykatu dwuelementowego.

equal_range

Wyszukuje parę pozycji uporządkowanego zakresu pierwszego mniej lub równoważne do pozycji określonego elementu, a drugi większy niż element stanowiska, gdzie poczucie równoważności lub kolejności wykorzystane do ustalenia położenia w sekwencji może zostać określona przez predykatu dwuelementowego.

Wypełnienie

Przypisuje tę samą wartość nowych każdy element w określonym zakresie.

fill_n

Przypisuje nową wartość określoną liczbę elementów w zakresie począwszy od określonego elementu.

Znajdź

Lokalizuje pozycję pierwszego wystąpienia elementu w zakresie, który ma określoną wartość.

find_end

Wyszukuje w ostatnim podciąg identyczne z określonej sekwencji lub odpowiada w znaczeniu określonym przez predykatu dwuelementowego.

find_first_of

Wyszukiwanie pierwszego wystąpienia jednej z wartości z zakresu docelowego lub pierwszego wystąpienia kilku elementów, które są równoważne w znaczeniu określonym przez predykatu dwuelementowego określonego zestawu elementów.

find_if

Lokalizuje pozycję pierwszego wystąpienia elementu w zakresie, który spełnia określony warunek.

find_if_not

Zwraca pierwszy element wskazanego zakresu, który nie spełnia warunku.

for_each

Obiekt określonej funkcji dotyczy każdego elementu w kolejności do przodu w zakresie i zwraca obiekt funkcji.

Generowanie

Przypisuje wartości generowane przez obiekt funkcji do każdego elementu w zakresie.

generate_n

Przypisuje wartości generowane przez obiekt funkcji do określonej liczby elementów jest zakresu i zwraca do jednej pozycji w przeszłości ostatniego przypisaną wartość.

zawiera

Sprawdza, czy jeden sortowanym zakresie zawiera wszystkie elementy zawarte w sortowanym zakresie drugiego, gdzie kryterium zamawianie lub równoważności między elementami może zostać określona przez predykatu dwuelementowego.

inplace_merge

Łączy elementy z dwóch kolejnych zakresów sortowane w sortowanym zakresie pojedynczego, gdzie kryterium sortowania może być określona przez predykatu dwuelementowego.

is_heap

Zwraca true , jeśli elementy w określonym zakresie formularza sterty.

is_heap_until

Zwraca true , jeśli określony zakres formularze sterty, aż do ostatniego elementu.

is_partitioned

Zwraca true Jeśli wszystkie elementy w danym zakresie, test true dla warunku pochodzą przed elementy test false.

is_sorted

Zwraca true , jeśli elementy w określonym zakresie są posortowane.

is_sorted_until

Zwraca true , jeśli elementy w określonym zakresie są posortowane.

iter_swap

Wymiany dwóch wartości określonych przez parę Iteratory określony.

lexicographical_compare

Porównuje elementów między dwóch sekwencji do określenia, który jest mniejszą z dwóch.

lower_bound

Znajduje pozycję pierwszego elementu w uporządkowanego zakresu ma wartość większa niż lub równa określonej wartości, gdy kryterium sortowania może być określona przez predykatu dwuelementowego.

make_checked_array_iterator

Tworzy checked_array_iterator , mogą być używane przez inne algorytmy.

make_heap

Konwertuje elementy z określonego zakresu sterty w pierwszym elementem jest największy i dla którego kryterium sortowania mogą być określone z predykatu dwuelementowego.

MAX

Porównuje dwa obiekty i zwraca większej z dwóch, gdzie kryterium sortowania może być określona przez predykatu dwuelementowego.

max_element

Znajduje pierwsze wystąpienie elementu największą określonego zakresu, gdzie kryterium sortowania może być określona przez predykatu dwuelementowego.

korespondencji seryjnej

Scala wszystkie elementy z dwóch zakresów źródłowych sortowane w zakres docelowy pojedynczy, sortowane, gdzie kryterium sortowania może być określona przez predykatu dwuelementowego.

min

Porównuje dwa obiekty i zwraca mniejszą z dwóch, gdzie kryterium sortowania może być określona przez predykatu dwuelementowego.

min_element

Znajduje pierwsze wystąpienie najmniejszy element w określonym zakresie, gdzie kryterium sortowania może być określona przez predykatu dwuelementowego.

minmax

Porównuje dwa parametry wejściowe i zwraca je jako parę w kolejności najmniej do najwyższego.

minmax_element

Wykonuje pracę wykonaną przez min_element i max_element w jednym wywołaniu.

Niezgodność

Porównuje dwa zakresy elementów dla równości lub równoważne, w sensie określony przez predykatu dwuelementowego i lokalizuje pierwsze miejsce, w którym występuje różnica.

<alg> move

Przenieś elementy związane z określonego zakresu.

move_backward

Przenosi elementy iteratora jednego do drugiego.Przeniesienie rozpoczyna się ostatni element w określonym zakresie i kończy się pierwszy element w tym zakresie.

next_permutation

Zmienia kolejność elementów w zakresie, tak aby oryginalnej kolejności otrzymuje brzmienie lexicographically dalej permutacji większa, jeśli istnieje, gdzie poczucie dalej mogą być określone z predykatu dwuelementowego.

none_of

Zwraca true gdy warunek nigdy nie jest obecny wśród elementów z podanego zakresu.

nth_element

Zakres elementów poprawnie lokalizowanie partycji nth element sekwencji w zakresie tak, aby wszystkie elementy przed nim są mniejsze lub równe jej i elementy, które po nim następują w sekwencji są większe niż lub równe jej.

partial_sort

Rozmieszcza określonej liczby mniejsze elementy, w zakresie, w kolejności nondescending lub kryterium sortowania określony przez predykatu dwuelementowego.

partial_sort_copy

Kopiuje elementy z zakresu źródłowego do zakresu docelowego, gdy elementy źródła są uporządkowane według albo mniejsza niż lub innego określonego predykatu dwuelementowego.

partycja

Klasyfikuje elementów w zakresie w dwa rozłączne zestawy z tych elementów spełniających te, które nie spełniają go poprzedzającym predykatu jednoelementowego.

partition_copy

Kopiuje elementy, dla których warunek jest true do jednego miejsca przeznaczenia, oraz warunek jest false do innego.Elementy muszą pochodzić z określonego zakresu.

partition_point

Zwraca pierwszy element z podanego zakresu, który nie spełnia warunek.Elementy są sortowane tak, aby te, które spełniają warunek pochodzą przed tymi, które nie.

pop_heap

Usuwa element największą z przodu sterty do dalej do ostatniej pozycji w zakresie i następnie formularze nowej sterty od pozostałych elementów.

prev_permutation

Zmienia kolejność elementów w zakresie, tak aby oryginalnej kolejności otrzymuje brzmienie lexicographically dalej permutacji większa, jeśli istnieje, gdzie poczucie dalej mogą być określone z predykatu dwuelementowego.

push_heap

Dodaje element, który znajduje się na końcu zakresu istniejących sterty, składające się z elementów poprzedniego w zakresie.

random_shuffle

Ponownie rozmieszcza sekwencji n elementów w zakresie do jednego z n!możliwych ustaleń wybranych losowo.

Usuń

Określona wartość z danego zakresu eliminuje bez zakłócania kolejności pozostałe elementy i zwracanie koniec nowy zakres wolny od określonej wartości.

remove_copy

Kopie elementów ze źródła zakresu do zakresu docelowego, chyba że elementy o określonej wartości nie są kopiowane bez zakłócania zamówienia pozostałe elementy i powrocie do końca nowego zakresu docelowego.

remove_copy_if

Kopie elementów z zakresu źródłowego do miejsca docelowego zakresu, chyba że niespełniających predykatu nie są kopiowane, bez naruszania zamówienia pozostałe elementy i powrocie do końca nowego zakresu docelowego.

remove_if

Eliminuje elementy, które spełniają predykat z danego zakresu bez zakłócania kolejności pozostałe elementy i zwracanie koniec nowy zakres wolny od określonej wartości.

Zamień

Sprawdza każdy element w zakresie i zastępuje go, jeśli go odpowiada określonej wartości.

replace_copy

Analizuje każdy element w zakres źródłowy i zastępuje go, jeśli go odpowiada określonej wartości podczas kopiowania wynik do nowego zakresu docelowego.

replace_copy_if

Analizuje każdy element w zakres źródłowy i zastępuje go podczas kopiowania do nowego zakresu docelowego wyniku spełnia określony predykatu.

replace_if

Analizuje każdy element w zakresie i zastępuje go spełnia określony predykatu.

odwrotne

Odwraca kolejność elementów w zakresie.

reverse_copy

Odwraca kolejność elementów w zakresie źródła podczas kopiowania ich do zakresu docelowego

Obracanie

Wymiany elementów w dwóch sąsiednich zakresów.

rotate_copy

Wymiany elementów w dwóch sąsiednich zakresów zakresu źródłowego i kopiuje wynik do zakresu docelowego.

wyszukiwanie

Wyszukiwanie pierwszego wystąpienia sekwencji w zakresie docelowym, której elementy są równe w danej sekwencji elementów lub której elementy są równoważne w znaczeniu określonym przez predykatu dwuelementowego do elementów w danej sekwencji.

search_n

Wyszukuje pierwszy podciąg, w zakresie, że o określoną liczbę elementów o określonej wartości lub relacji z tą wartością podaną przez predykatu dwuelementowego.

set_difference

Wszystkie elementy, które należą do zakresu docelowego pojedynczy, sortowane, gdzie kryterium sortowania może być określona przez predykatu dwuelementowego zakres jednego źródła posortowane, ale nie drugi zakres źródłowy sortowane, ważnym.

set_intersection

Ważnym wszystkich elementów, które należą do obu zakresów źródłowych sortowane w zakresie przeznaczenia pojedynczy, sortowane, gdzie kryterium sortowania może być określona przez predykatu dwuelementowego.

set_symmetric_difference

Ważnym wszystkich elementów, które należą do jednego, ale nie obu zakresów źródłowych posortowane w zakresie przeznaczenia pojedynczy, sortowane, gdzie kryterium sortowania może być określona przez predykatu dwuelementowego.

set_union

Ważnym wszystkich elementów, które należą do co najmniej jeden z dwóch zakresów źródłowych sortowane do zakresu docelowego pojedynczy, sortowane, gdzie kryterium sortowania może być określona przez predykatu dwuelementowego.

Sortowanie

Rozmieszcza elementy w określonym zakresie do nondescending zamówienia lub kryterium sortowania określony przez predykatu dwuelementowego.

sort_heap

Konwertuje sterty w sortowanym zakresie.

stable_partition

Klasyfikuje elementów w zakresie w dwa rozłączne zestawy z tych elementów spełniających te, które nie spełniają, zachowując względne kolejność elementów równoważnych poprzedzających predykatu jednoelementowego.

stable_sort

Rozmieszcza elementy w określonym zakresie do nondescending zamówienia lub kryterium sortowania określony przez predykatu dwuelementowego i zachowuje względna kolejność elementów równoważnych.

Zamień

Wymienia wartości elementów między dwoma typami obiektów, przypisywania zawartość pierwszego obiektu do drugiego obiektu i zawartość drugiego do pierwszego.

swap_ranges

Wymiany elementów jeden zakres z zakresu elementów innego równej wielkości.

Przekształcanie

Dotyczy obiekt określonej funkcji, każdy element w zakres źródłowy lub para elementów z dwóch zakresów źródłowych i skopiowanie wartości zwracane funkcji obiekt do zakresu docelowego.

unikatowe

Usuwa zduplikowane elementy, które przylegają do siebie w określonym zakresie.

unique_copy

Kopie elementów z zakresu źródłowego do docelowego zakresu poza zduplikowane elementy, które przylegają do siebie.

upper_bound

Znajduje pozycję pierwszego elementu w uporządkowanego zakresu ma wartość, która jest większa niż określona wartość, gdy kryterium sortowania może być określona przez predykatu dwuelementowego.

Zobacz też

Informacje

Bezpieczeństwo wątków w standardowa biblioteka języka C++

Standardowa biblioteka szablonu

Inne zasoby

Pliki nagłówków