Algorytmy

Algorytmy są podstawową częścią standardowa biblioteka szablonów.Algorytmy nie działają z samych pojemników, ale raczej z Iteratory.Dlatego ten sam algorytm mogą być używane przez większość, jeśli nie dla wszystkich kontenerów STL.W tej sekcji omówiono konwencje i terminologii algorytmy STL.

Uwagi

Opisy funkcji szablonu algorytm zatrudniają kilka skróconego wyrażenia:

  • Wyrażenie "w zakresie [A, B)" oznacza sekwencję zero lub więcej dyskretnych wartości rozpoczynające się od A do ale nie włącznie B.Zakres jest prawidłowy tylko wtedy, gdy B jest dostępny z A; można przechowywać A w obiekcie N (N = A), przyrostu obiekt zero lub kilka razy (++N), i mieć obiekt porównać równe B po skończoną liczbę przyrostów (N == B*).*

  • Wyrażenie "każdego N w zakresie [A, B)" oznacza, że N zaczyna się od wartości A i jest zwiększana zero lub kilka razy, dopóki to jest równa wartości B.Sprawy N == B nie jest w zasięgu.

  • Wyrażenie "najniższa wartość N w zakresie [A, B) takie, że X" oznacza, że warunek X jest określana dla każdego N w zakresie [A, B) aż do warunku X jest spełniony.

  • Wyrażenie "najwyższą wartość N w zakresie [A, B) takie, że X oznacza, że X jest określana dla każdego N w zakresie [A, B).Funkcja ta przechowuje w K kopię N za każdym razem warunek X jest spełniony.Jeśli wystąpi taki sklep, funkcja zastępuje wartość końcową N, który jest równa B, z wartością K.Dwukierunkowy lub dostępie losowym sterująca, jednak może również oznaczać, że N rozpoczyna się o najwyższej wartości w zakresie i jest zmniejszany w zakresie aż do warunku X jest spełniony.

  • Wyrażeń, takich jak X - Y, gdzie X i Y może być Iteratory innych niż Iteratory-, są przeznaczone w sensie matematycznych.Funkcja nie zwraca operator**—** Jeśli musi określić wartość ta.To samo dotyczy również dla wyrażeń takich jak X + N i X - N, gdzie N jest typu Liczba całkowita.

Kilku algorytmów należy użyć predykat, który wykonuje porównania parowania, takich jak z operator==, aby dawała bool wynik.Funkcja predykatu operator==, lub zastępuje go, nie może powodować zmiany jednego z argumentów.Muszą one dostarczyć taki sam bool powoduje za każdym razem jest oceniany i musi dają ten sam wynik, jeśli kopię albo argument jest podstawiane operandu.

Kilku algorytmów należy użyć predykat, że należy nałożyć ścisłe słabe zamawiania na parach elementów z sekwencji.For the predicate pr(X, Y):

  • Ścisłe oznacza, że pr(X, X) ma wartość false.

  • Słaby oznacza, że X i Y mają równoważne if zamawiania!pr(X, Y) && !pr(Y, X) (X == Y does not need to be defined).

  • Ordering means that pr(X, Y) &&pr(Y, Z) implies pr(X, Z).

Niektóre z tych algorytmów niejawnie orzeczenie X<Y.Są inne predykatów, które zazwyczaj spełniają surowe słabych zamawiania wymóg X>Y, mniej(X, Y), i greater(X, Y).Uwaga, jednak, że predykaty takich jak X<= Y i X>= Y nie spełniają tego wymogu.

Sekwencja elementów wyznaczone przez Iteratory w zakresie [First, Last) jest sekwencją zleconych przez operatora**<** if, dla każdego N w zakresie [0,Last - First) i dla każdego M w zakresie (N,Last - First) predykat!(*(First + M) < *(First + N)) is true. (Należy zauważyć, że elementy będą sortowane w kolejności rosnącej). Funkcja predykatu operatora<, lub zastępuje go, nie może powodować zmiany jednego z argumentów.Muszą one dostarczyć taki sam bool powoduje za każdym razem jest oceniany i musi dają ten sam wynik, jeśli kopię albo argument jest podstawiane operandu.Ponadto muszą nałożyć ścisłe słabe zamawiania na argumenty, które są porównywane.

Sekwencja elementów wyznaczone przez Iteratory w zakresie [First, Last) sterty zamówiony przez operatora< if, dla każdego N w zakresie [1,Last - First) predykat!(*First< *(First + N)) is true. (Pierwszy element jest największy). Strukturę wewnętrzną jest znanym tylko do funkcji szablonu make_heap, pop_heap, i push_heap.Podobnie jak w przypadku uporządkowaną sekwencją, funkcja predykatu operatora<, zastępuje go, nie może powodować zmiany jednego z argumentów i musi obciążyć ścisłe słabe zamawiania na operandy są porównywane.Muszą one dostarczyć taki sam bool powoduje za każdym razem jest oceniany i musi dają ten sam wynik, jeśli kopię albo argument jest podstawiane operandu.

Algorytmy STL znajdują się w <algorithm> i <numeric> plików nagłówkowych.

Zobacz też

Informacje

Standardowa biblioteka szablonów

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