Udostępnij za pośrednictwem


Algorytmy

Algorytmy są podstawową część biblioteki standardowej szablonu.Algorytmy, które nie działają z pojemników, same, ale raczej z Iteratory.W związku z tym tego samego algorytmu można używany przez większość, jeśli nie dla wszystkich pojemników STL.W tej części 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ę 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), zwiększ wartość zero lub więcej razy ten obiekt (++n), i obiekt, porównaj równą b po skończoną liczbę przyrostów (N == B*).*

  • Wyrażenie "każdego n w zakresie [a, b)" oznacza, że n rozpoczyna się od wartości a i jest zwiększana zero lub więcej razy, dopóki nie jest ona równa wartości b.W przypadku n == b nie znajduje się w zakresie.

  • 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 się w K kopię n za każdym razem warunek x jest spełniony.Jeśli wystąpi taki magazyn, funkcja zastępuje wartość końcową n, który jest równe b, z wartością K.Dwukierunkowy lub iteratora random access, jednak to może oznaczać, że n rozpoczyna się z najwyższą wartość z zakresu 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 random access, są przeznaczone, w sensie matematycznych.Funkcja nie oceny operator**—** musi określić takie wartości.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ć predykatu, który wykonuje porównanie parowania, takie jak z operator==, aby dawała bool wynik.Funkcja predykatu operator==, lub jakichkolwiek zastępujące nie mogą zmieniać albo jego operandów.Musi on takie same plon bool powoduje za każdym razem, gdy sprawdzana jest zgodność i musi dają ten sam wynik, jeśli kopię albo operand jest podstawiane operand.

Kilku algorytmów, należy użyć predykatu, który musi nakładać ś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łabe oznacza, że x i y mają równoważne zamawiania if!pr(X, Y) && !pr(Y, X) (X == Y does not need to be defined).

  • Zamawianie oznacza, że pr(x, y) & & pr(Y, Z) implies pr(X, Z).

Niektóre z tych algorytmów niejawnie używać predykat x < Y.Inne predykatów, zwykle spełniających ściśle słabe zamawiania wymogu są x > Y, less(X, Y), and 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ą uporządkowane według operator**<</c7> Jeśli dla każdego w zakresie [0,**nLast - First) i dla każdego m w zakresie (N,Last - First) predykat!(*(First + M) < *(First + N)) is true.(Należy zauważyć, że elementy są sortowane w kolejności rosnącej). Funkcja predykatu operator <, lub jakichkolwiek zastępujące nie mogą zmieniać albo jego operandów.Musi on takie same plon bool powoduje za każdym razem, gdy sprawdzana jest zgodność i musi dają ten sam wynik, jeśli kopię albo operand jest podstawiane operand.Ponadto muszą nakładać ścisłe słabe zamawiania na operandów, które porównuje.

Sekwencja elementów wyznaczone przez Iteratory w zakresie [First, Last) jest sterty uporządkowane według operatora < Jeśli, dla każdego n w zakresie [1,Last - First) predykat!(*First < *(First + N)) is true.(Pierwszy element jest największy). Jej wewnętrznej struktury znanych tylko do funkcji szablonu make_heap, pop_heap, i push_heap.Podobnie jak w przypadku uporządkowana sekwencja predykatu funkcji operator <, lub jakichkolwiek zastępujące nie mogą zmieniać albo argumentów i musi nakładać, ścisłe słabe zamawiania na operandy porównuje.Musi on takie same plon bool powoduje za każdym razem, gdy sprawdzana jest zgodność i musi dają ten sam wynik, jeśli kopię albo operand jest podstawiane operand.

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

Zobacz też

Informacje

Standardowa biblioteka szablonu

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