Udostępnij za pośrednictwem


<algorithm>

Definiuje funkcje szablonu kontenera standardowej biblioteki szablonów (STL), które wykonują algorytmy.

(see relevant links below for specific algorithm syntax)

Uwagi

Algorytmy STL są ogólne, ponieważ mogą działać na różnych strukturach danych.Struktury danych, na których mogą one działać, obejmują nie tylko klasy kontenera STL, takie jak vector i list, ale również struktury danych zdefiniowane przez program i tablice elementów, które spełniają wymogi określonego algorytmu.Algorytmy STL osiągają ten poziom ogólności przez dostęp i przechodzenie przez elementy kontenera pośrednio poprzez iteratory.

Algorytmy STL przetwarzają zakresy iteratorów, które zazwyczaj są określane przez ich początkową lub końcową pozycję.Odnośne zakresy muszą być prawidłowe w tym sensie, że wszystkie wskaźniki w zakresach muszą być wyłuskiwalne, a w ramach sekwencji każdego zakresu, ostatnia pozycja musi być osiągalna od pierwszej przez inkrementację.

Algorytmy STL rozszerzają działania wspierane przez operacje i funkcje elementów członkowskich każdego kontenera STL i umożliwiają pracę, na przykład, z różnymi typami obiektów kontenera w tym samym czasie.Do przekazywania informacji o przeznaczeniu algorytmów były używane dwa przyrostki.

  • _if Sufiks wskazuje, że algorytm jest używany z obiektami funkcji działających wartości elementów, a nie wartości ze sobą elementy.Algorytm find_if szuka elementów, których wartości spełniają kryterium określone przez obiekt funkcji, a algorytm find wyszukuje określoną wartość.

  • Przyrostek _copy oznacza, że algorytm nie tylko manipuluje wartościami elementów, ale również kopiuje zmodyfikowane wartości do zakresu docelowego.Algorytm reverse odwraca kolejność elementów w zakresie, a algorytm reverse_copy kopiuje również wynik do zakresu docelowego.

Algorytmy STL często klasyfikuje się według grup, które w jakiś sposób wskazują ich cel lub wymagania.Należą do nich modyfikowania algorytmy Zmień wartość elementów w porównaniu bez modyfikowania algorytmów, które nie zawierają.Algorytmy mutujące zmieniają kolejność elementów, ale nie ich wartości.Algorytmy usuwające mogą wyeliminować elementy z zakresu lub kopii zakresu.Algorytmy sortujące zmieniają kolejność elementów w zakresie na różne sposoby, a algorytmy sortowanego zakresu działają jedynie na algorytmach, których elementy zostały posortowane w określony sposób.

Algorytmy liczbowego STL, używane do przetwarzania numeryczny ma swoje własne pliku nagłówka < liczbowego >, i funkcji obiekty i karty są definiowane w nagłówku < funkcjonalności > obiektów funkcji, które zwracają wartości logicznych są nazywane predykatów.Domyślny predykat binarny to operator< porównania.Ogólnie rzecz biorąc, szeregowane elementy muszą być mniej niż porównywalne, tak aby, mając dowolne dwa elementy, można było określić, czy są one równoważne (w sensie, żaden nie jest mniejszy niż ten drugi), czy że jeden jest mniejszy od drugiego.Skutkuje to ustaleniem kolejności elementów nierównoważnych.

Funkcje

adjacent_find

Wyszukuje dwa sąsiadujące elementy, które są równe lub spełniają określony warunek.

all_of

Zwraca true, kiedy warunek jest obecny dla każdego elementu z podanego zakresu.

any_of

Zwraca true, kiedy warunek występuje co najmniej raz w określonym zakresie elementów.

binary_search

Testuje, czy w sortowanym zakresie istnieje element, który jest równy określonej wartości lub który jest odpowiednikiem w sensie określonym przez predykat binarny.

copy

Przypisuje wartości elementów z zakresu źródłowego do zakresu docelowego, iterując przez sekwencję źródłową elementów oraz przypisując im nowe pozycje w kierunku do przodu.

copy_backward

Przypisuje wartości elementów z zakresu źródłowego do zakresu docelowego, iterując przez sekwencję źródłową elementów oraz przypisując im nowe pozycje w kierunku do tyłu.

copy_if

Kopiuj wszystkie elementy w danym zakresie, które testują true dla określonego warunku

copy_n

Kopiuje określoną liczbę elementów.

count

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

count_if

Zwraca liczbę elementów w zakresie, których wartości pasują do określonego warunku.

equal

Porównuje dwa zakresy element po elemencie, pod względem równości lub równoważności w sensie określonym przez predykat binarny.

equal_range

Wyszukuje parę pozycji w uporządkowanym zakresie, pierwszą mniejszą lub równoważną położeniu określonego elementu, a drugą większą niż pozycja elementu, gdzie sens równoważności lub szeregowania używany do ustanawiania pozycji w sekwencji może zostać określony przez predykat binarny.

fill

Przypisuje tę samą nową wartość każdemu elementowi w określonym zakresie.

fill_n

Przypisuje nową wartość określonej liczbie elementów z zakresu, począwszy od konkretnego elementu.

find

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

find_end

Wyszukuje w zakresie ostatnią podsekwencję, która jest identyczna z określoną sekwencją lub jest równoważna w sensie określonym przez predykat binarny.

find_first_of

Wyszukuje pierwsze wystąpienie którejś z kilku wartości w zakresie docelowym lub pierwsze wystąpienie któregoś z kilku elementów, które są równoważne w sensie określonym przez predykat binarny dla 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 we wskazanym zakresie, który nie spełnia warunku.

for_each

Stosuje określony obiekt funkcji do każdego elementu w kolejności do przodu w zakresie i zwraca obiekt funkcji.

generate

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

generate_n

Przypisuje wartości generowane przez obiekt funkcji określonej liczbie elementów w zakresie i wraca do jednej pozycji poza ostatnią przypisaną wartością.

includes

Sprawdza, czy jeden posortowany zakres zawiera wszystkie elementy zawarte w drugim posortowanym zakresie, gdzie kryterium szeregowania lub równoważności między elementami może zostać określone przez predykat binarny.

inplace_merge

Łączy elementy z dwóch następujących po sobie posortowanych zakresów w pojedynczy posortowany zakres, gdzie kryterium szeregowania może być określone przez predykat binarny.

is_heap

Zwraca true, jeśli elementy w określonym zakresie tworzą stertę.

is_heap_until

Zwraca true, jeśli określony zakres tworzy stertę do ostatniego elementu.

is_partitioned

Zwraca true, jeśli wszystkie elementy w danym zakresie, które testują true dla warunku, występują przed którymkolwiek elementem, który testuje false.

is_permutation

Określa, czy elementy znajdujące się w podanym zakresie tworzą prawidłowy permutacji.

is_sorted

Zwraca true, jeśli elementy w określonym zakresie są w kolejności posortowanej.

is_sorted_until

Zwraca true, jeśli elementy w określonym zakresie są w kolejności posortowanej.

iter_swap

Wymienia dwie wartości, do których odnosi się para określonych iteratorów.

lexicographical_compare

Porównuje dwie sekwencje element po elemencie, aby określić, która z nich jest mniejsza.

lower_bound

Znajduje pozycję pierwszego elementu w uporządkowanym zakresie, który ma wartość większą niż lub równoważną określonej wartości, gdzie kryterium szeregowania może być określone przez predykat binarny.

make_heap

Konwertuje elementy z określonego zakresu na stertę, w której pierwszy element jest największy i dla której kryterium sortowania może być określone przez predykat binarny.

max

Porównuje dwa obiekty i zwraca większy z nich, gdzie kryterium sortowania może być określone przez predykat binarny.

max_element

Znajduje pierwsze wystąpienie największego elementu w określonym zakresie, gdzie kryterium sortowania może być określone przez predykat binarny.

merge

Łączy wszystkie elementy z dwóch następujących po sobie posortowanych zakresów źródłowych w pojedynczy posortowany zakres docelowy, gdzie kryterium szeregowania może być określone przez predykat binarny.

min

Porównuje dwa obiekty i zwraca mniejszy z nich, gdzie kryterium sortowania może być określone przez predykat binarny.

min_element

Znajduje pierwsze wystąpienie najmniejszego elementu w określonym zakresie, gdzie kryterium sortowania może być określone przez predykat binarny.

minmax

Porównuje dwa parametry wejściowe i zwraca je jako parę w kolejności od najmniejszego do największego.

minmax_element

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

mismatch

Porównuje dwa zakresy element po elemencie pod względem równości lub odpowiedniości w sensie określonym przez predykat binarny i lokalizuje pierwsze miejsce, w którym występuje różnica.

<alg> move

Przenieś elementy związane z określonym zakresem.

move_backward

Przenosi elementy jednego iteratora do drugiego.Przeniesienie rozpoczyna się od ostatniego elementu w określonym zakresie, a kończy się na pierwszym elemencie w tym zakresie.

next_permutation

Zmienia kolejność elementów w zakresie, tak że oryginalna kolejność jest zastąpiona przez leksykograficznie kolejną większą permutację, o ile takowa istnieje, gdzie sens „kolejna” może być określony przez predykat binarny.

none_of

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

nth_element

Dzieli zakres elementów, poprawnie lokalizując n-ty element sekwencji w zakresie, tak że wszystkie elementy przed nim są mniejsze od niego lub mu równe, a wszystkie elementy, które następują w sekwencji po nim, są większe od niego lub mu równe.

partial_sort

Rozmieszcza określoną liczbę mniejszych elementów w zakresie w niemalejącej kolejności, lub według kryteriów sortowania określonych przez binarny predykat.

partial_sort_copy

Kopiuje elementy z zakresu źródłowego do zakresu docelowego, gdzie elementy źródłowe są uporządkowane według albo zasady mniejszy niż, albo innego określonego predykatu binarnego.

partition

Klasyfikuje elementy w zakresie na dwa rozłączne zestawy, z elementami spełniającymi predykat unarny poprzedzającymi te, które go nie spełniają.

partition_copy

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

partition_point

Zwraca pierwszy element w danym zakresie, który nie spełnia warunku.Elementy są sortowane, aby te, które spełniają warunek, występowały przed tymi, które go nie spełniają.

pop_heap

Usuwa największy element z przodu sterty do przedostatniej pozycji w zakresie, a następnie tworzy nową stertę z pozostałych elementów.

prev_permutation

Zmienia kolejność elementów w zakresie, tak że oryginalna kolejność jest zastąpiona przez leksykograficznie kolejną większą permutację, o ile takowa istnieje, gdzie sens „kolejna” może być określony przez predykat binarny.

push_heap

Dodaje element znajdujący się na końcu zakresu do istniejącej sterty, która składa się z poprzednich elementów w zakresie.

random_shuffle

Rozmieszcza sekwencję N elementów w zakresie do jednego z N!możliwości ustalenia wybranych losowo.

remove

Eliminuje określoną wartość z danego zakresu bez zakłócania kolejności pozostałych elementów i zwracania końca nowego zakresu wolnego od określonej wartości.

remove_copy

Kopiuje elementy z zakresu źródłowego do zakresu docelowego, z tym wyjątkiem, że elementy o określonej wartości nie są kopiowane, bez naruszania kolejności pozostałych elementów i zwracania końca nowego zakresu docelowego.

remove_copy_if

Kopiuje elementy z zakresu źródłowego do zakresu docelowego, z tym wyjątkiem, że elementy spełniające predykat nie są kopiowane, bez naruszania kolejności pozostałych elementów i zwracania końca nowego zakresu docelowego.

remove_if

Eliminuje elementy, które spełniają predykat, z danego zakresu bez zakłócania kolejności pozostałych elementów i zwracania końca nowego zakresu wolnego od określonej wartości.

replace

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

replace_copy

Sprawdza każdy element w zakresie źródłowym i zastępuje go, jeśli odpowiada określonej wartości, jednocześnie kopiując wynik do nowego zakresu docelowego.

replace_copy_if

Sprawdza każdy element w zakresie źródłowym i zastępuje go, jeśli spełnia określony predykat, jednocześnie kopiując wynik do nowego zakresu docelowego.

replace_if

Sprawdza każdy element w zakresie i zastępuje go, jeśli spełnia określony predykat.

reverse

Odwraca kolejność elementów w obrębie zakresu.

reverse_copy

Odwraca kolejność elementów w obrębie zakresu źródłowego, jednocześnie kopiując je do zakresu docelowego

rotate

Wymienia elementy znajdujące się w dwóch sąsiednich zakresach.

rotate_copy

Wymienia elementy w dwóch sąsiednich zakresach w ramach zakresu źródłowego i kopiuje wynik do zakresu docelowego.

search

Wyszukuje pierwsze wystąpienie sekwencji w zakresie docelowym, której elementy są równe tym w danej sekwencji elementów lub której elementy są równoważne w sensie określonym przez predykat binarny dla elementów w danej sekwencji.

search_n

Wyszukuje pierwszą podsekwencję w zakresie, w której określona liczba elementów ma określoną wartość lub relację do tej wartości określoną przez predykat binarny.

set_difference

Łączy w sobie wszystkie elementy, które należą do jednego posortowanego zakresu źródłowego, ale nie do drugiego posortowanego zakresu źródłowego, w pojedynczy, posortowany zakres docelowy, gdzie kryterium sortowania może być określone przez predykat binarny.

set_intersection

Łączy w sobie wszystkie elementy, które należą do obu posortowanych zakresów źródłowych w pojedynczy posortowany zakres docelowy, gdzie kryterium szeregowania może być określone przez predykat binarny.

set_symmetric_difference

Łączy w sobie wszystkie elementy, które należą do jednego z, ale nie obu posortowanych zakresów źródłowych w pojedynczy posortowany zakres docelowy, gdzie kryterium szeregowania może być określone przez predykat binarny.

set_union

Łączy w sobie wszystkie elementy, które należą do przynajmniej jednego z dwóch posortowanych zakresów źródłowych w pojedynczy posortowany zakres docelowy, gdzie kryterium szeregowania może być określone przez predykat binarny.

sort

Rozmieszcza elementy w określonym zakresie w niemalejącej kolejności lub według kryteriów sortowania określonych przez binarny predykat.

losowo

Elementy przesuwa (Reorganizuje) dla określonego zakresu przy użyciu generator liczb losowych.

sort_heap

Konwertuje stertę na sortowany zakres.

stable_partition

Klasyfikuje elementy w zakresie na dwa rozłączne zestawy, z elementami spełniającymi predykat unarny poprzedzającymi te, które go nie spełniają, zachowując względną kolejność elementów równoważnych.

stable_sort

Rozmieszcza elementy w określonym zakresie w niemalejącej kolejności lub według kryterium sortowania określonego przez binarny predykat i zachowuje względną kolejność elementów równoważnych.

swap

Wymienia wartości elementów między dwoma typami obiektów, przypisując zawartość pierwszego obiektu do drugiego obiektu, a zawartość drugiego do pierwszego.

swap_ranges

Zamienia elementy jednego zakresu przez elementy innego zakresu, zakresy mają równe wielkości.

transform

Stosuje określony obiekt funkcji dla każdego elementu w zakresie sortowania lub dla pary elementów z dwóch zakresów sortowania i kopiuje zwracane wartości obiektu funkcji do zakresu docelowego.

unique

Usuwa zduplikowane elementy, które sąsiadują ze sobą w określonym zakresie.

unique_copy

Kopiuje elementy z zakresu źródłowego do zakresu docelowego z wyjątkiem zduplikowanych elementów, które ze sobą sąsiadują.

upper_bound

Znajduje pozycję pierwszego elementu w uporządkowanym zakresie, który ma wartość większą niż określona wartość, gdzie kryterium sortowania może być określone przez predykat binarny.

Zobacz też

Informacje

Bezpieczeństwo wątku w standardowej bibliotece C++

Standardowa biblioteka szablonów

Inne zasoby

Pliki nagłówkowe standardowej biblioteki języka C++