Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Definiuje funkcje szablonu kontenera biblioteki standardowej języka C++, które wykonują algorytmy.
Składnia
(see links below for specific algorithm syntax)
Uwaga
Biblioteka <algorithm>
używa również instrukcji #include <initializer_list>
.
Uwagi
Algorytmy standardowej biblioteki języka C++ mogą działać na różnych strukturach danych. Struktury danych, na których mogą działać, obejmują nie tylko klasy kontenerów biblioteki standardowej języka C++, takie jak vector
i list
, ale także struktury danych zdefiniowane przez użytkownika i tablice elementów, o ile spełniają wymagania określonego algorytmu. Algorytmy standardowej biblioteki języka C++ osiągną ten poziom uogólnienia przez uzyskiwanie dostępu do elementów kontenera i przechodzenie przez nie pośrednio za pośrednictwem iteratorów.
Algorytmy standardowej biblioteki języka C++ przetwarzają zakresy iteracyjne, które są zwykle określane przez ich pozycje początkowe lub końcowe. Zakresy, o których mowa, muszą być prawidłowe w sensie, że wszystkie iteratory w zakresach muszą być wyłuszczalne, a w ramach sekwencji każdego zakresu ostatnia pozycja musi być osiągalna od pierwszego przez zwiększanie iteratora.
Począwszy od języka C++20, większość algorytmów zdefiniowanych w <algorithm>
pliku jest również dostępna w postaci, która przyjmuje range
wartość . Na przykład zamiast wywoływać sort(v1.begin(), v1.end(), greater<int>());
metodę , możesz wywołać metodę . ranges::sort(v1, greater<int>());
Algorytmy standardowej biblioteki języka C++ mogą pracować z różnymi typami obiektów kontenera w tym samym czasie. Dwa sufiksy zostały użyte do przekazywania informacji o celu algorytmów:
Sufiks
_if
wskazuje, że algorytm jest używany z obiektami funkcji, które działają na wartości elementów, a nie na samych elementach. Na przykładfind_if
algorytm wyszukuje elementy, których wartości spełniają kryterium określone przez obiekt funkcji, podczas gdyfind
algorytm wyszukuje określoną wartość.Sufiks
_copy
wskazuje, że algorytm zazwyczaj modyfikuje skopiowane wartości, a nie kopiuje zmodyfikowane wartości. Innymi słowy, nie modyfikują elementów zakresu źródłowego, ale umieszczają wyniki w zakresie danych wyjściowych/iteratorze. Na przykładreverse
algorytm odwraca kolejność elementów w zakresie, natomiastreverse_copy
algorytm kopiuje odwrócony wynik do zakresu docelowego.
Algorytmy standardowej biblioteki języka C++ są często klasyfikowane w grupach, aby wskazać ich przeznaczenie lub wymagania. Obejmują one modyfikowanie algorytmów, które zmieniają wartość elementów w porównaniu z algorytmami, które nie modyfikują. Algorytmy mutujące zmieniają kolejność elementów, ale nie ich wartości. Algorytmy usuwające mogą wyeliminować elementy z zakresu lub kopii zakresu. Algorytmy sortowania zmieniają kolejność elementów w zakresie na różne sposoby i sortowane algorytmy zakresu działają tylko na zakresy, których elementy zostały posortowane w określony sposób.
Algorytmy liczbowe biblioteki standardowej języka C++ udostępniane do przetwarzania liczbowego mają własny plik <numeric>
nagłówka , a obiekty i adaptery funkcji są definiowane w nagłówku <functional>
. Obiekty funkcji zwracające wartości logiczne są nazywane predykatami. Domyślny predykat binarny to porównanie operator<
. Ogólnie rzecz biorąc, uporządkowane elementy muszą być mniejsze niż porównywalne, tak aby, biorąc pod uwagę dwa elementy, można określić, że są one równoważne (w sensie, że żadna z nich nie jest mniejsza niż druga) lub że jeden jest mniejszy niż drugi. Skutkuje to ustaleniem kolejności elementów nierównoważnych.
Algorytmy
Nazwa/nazwisko | opis |
---|---|
adjacent_find |
Wyszukuje dwa sąsiadujące elementy, które są równe lub spełniają określony warunek. |
all_of |
Zwraca wartość true , gdy warunek jest obecny w każdym elemecie w danym zakresie. |
any_of |
Zwraca wartość true , gdy 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. |
clamp |
|
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 |
Skopiuj wszystkie elementy w danym zakresie, które testuje true określony warunek |
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 w 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. |
for_each_n |
|
generate |
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 w zakresie i wraca do pozycji z jedną przeszłości 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 wartość true , jeśli elementy w określonym zakresie tworzą stertę. |
is_heap_until |
Zwraca wartość true , jeśli określony zakres tworzy stertę do ostatniego elementu. |
is_partitioned |
Zwraca wartość true , jeśli wszystkie elementy w danym zakresie, które testuje true warunek, pochodzą przed wszystkimi elementami testowymi false . |
is_permutation |
Określa, czy elementy w danym zakresie tworzą prawidłową permutację. |
is_sorted |
Zwraca wartość true , jeśli elementy w określonym zakresie są w kolejności sortowania. |
is_sorted_until |
Zwraca wartość true , jeśli elementy w określonym zakresie są w kolejności sortowania. |
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ę wykonywaną przez min_element polecenie 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 wartość true , gdy warunek nigdy nie występuje wśród elementów w danym zakresie. |
nth_element |
Partycjonuje zakres elementów, poprawnie lokalizując nelementu sekwencji w zakresie, tak aby wszystkie elementy przed nim są mniejsze lub równe, a wszystkie elementy, które następują po niej w sekwencji, są większe lub 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 to true jedno miejsce docelowe, i dla którego warunek jest false inny. Elementy muszą pochodzić z określonego zakresu. |
partition_point |
Zwraca pierwszy element w danym zakresie, który nie spełnia warunku. Elementy są sortowane tak, aby te, które spełniają warunek, pochodzą przed tymi, które nie. |
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 |
Zmienia kolejność elementów N w zakresie w jeden z N! możliwe ustalenia wybrane 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 tą różnicą, że elementy określonej wartości nie są kopiowane, bez zakłócania 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 tą różnicą, że spełnianie predykatu nie jest kopiowane, bez zakłócania 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. |
sample |
|
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. |
shuffle |
Elementy mieszania (zmienia rozmieszczenie) dla danego zakresu przy użyciu generatora 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 znajdują się obok siebie w określonym zakresie. |
unique_copy |
Kopiuje elementy z zakresu źródłowego do zakresu docelowego z wyjątkiem zduplikowanych elementów, które znajdują się obok siebie. |
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ż
Odwołanie do plików nagłówka
Bezpieczeństwo wątku w standardowej bibliotece C++
Dokumentacja standardowej biblioteki C++