Sdílet prostřednictvím


Algoritmy

Algoritmy jsou základní součástí standardní šablonu knihovny.Algoritmy nefungují s kontejnery, samy, ale s u iterátorů.Proto stejného algoritmu mohou využívat většinu není-li všechny kontejnery STL.Tato část popisuje konvence a terminologie algoritmy STL.

Poznámky

Popis funkce šablony algoritmus zaměstnat několik vět zkrácený zápis:

  • Fráze "v rozsahu [a, b)" se rozumí posloupnost nula nebo více diskrétní hodnoty začínající a až do, ale ne včetně b.Oblast je platná pouze tehdy, pokud b je dostupná z A; můžete ukládat a v objektu n (n = a), zvýšit objekt nula nebo více času (++n), a objekt porovnat rovno b po konečný počet přírůstky (N == B*).*

  • Se slova "každý n v rozsahu [a, b)" znamená, že n začíná hodnotou a a je zvýšen nula nebo více času, dokud ji se rovná hodnotě b.Případ n == b není v rozsahu.

  • Fráze "nejnižší hodnota n v rozsahu [a, b), x" znamená, že podmínka x je určena pro každou n v rozsahu [a, b) do stavu x je splněna.

  • Fráze "nejvyšší hodnota n v rozsahu [a, b), x znamená, že x je určena pro každou n v rozsahu [a, b).Funkce ukládá v K kopii n při každém podmínka x je splněna.Pokud dojde k takové úložiště, nahradí funkce konečné hodnoty n, která se rovná b, s hodnotou K.Obousměrný nebo iterační náhodný přístup, však ji můžete také znamenat, že n začíná nejvyšší hodnotu v rozsahu a je snížena v rozsahu až do stavu x je splněna.

  • Výrazy jako x - Y, kde x a y může být u iterátorů než u iterátorů náhodný přístup, jsou určeny v matematickém smyslu.Funkci nelze vyhodnotit nutně operátor**–** Pokud je třeba určit tyto hodnoty.To platí také pro výrazy jako x + n a x - N, kde n je typ integer.

Provést několik algoritmů použijte predikát, který provádí porovnání párový, například s operator==, na základě výnosu bool výsledek.Funkce predikátu operator==, nebo jakékoli náhrady, nesmí měnit buď jeho operandy.Musí zaručit, stejné bool vést pokaždé, když je vyhodnocena a pokud operand nahradí kopie buď operand ji musí zaručit stejný výsledek.

Proveďte několik algoritmů použijte predikát, který musí ukládat přísné slabé řazení páry z pořadí prvků.For the predicate pr(X, Y):

  • Pevné znamená, že pr(x, x) je false.

  • Slabá znamená, že x a y mít rovnocenné objednávání if!pr(X, Y) && !pr(Y, X) (X == Y does not need to be defined).

  • Objednání znamená, že pr(x, y) & & pr(Y, Z) implies pr(X, Z).

Některé z těchto algoritmů implicitně, použijte predikát x < Y.Ostatní predikáty, které obvykle splňují přísné slabá řazení požadavku jsou x > Y, less(X, Y), and greater(X, Y).Poznámka, ale který predikáty jako x < = y a x > = y nesplňují tento požadavek.

Pořadí prvků určených u iterátorů v rozsahu [First, Last) je pořadí seřazený podle operátor**<** if pro každou n v rozsahu [0,Last - First) a pro každou m v rozsahu (N,Last - First) predikátu!(*(First + M) < *(First + N)) is true.(Všimněte si, že prvky jsou seřazeny vzestupně.) Funkce predikátu operátor <, nebo jakékoli náhrady, nesmí měnit buď jeho operandy.Musí zaručit, stejné bool vést pokaždé, když je vyhodnocena a pokud operand nahradí kopie buď operand ji musí zaručit stejný výsledek.Kromě toho musí ukládat přísné slabé řazení operandy, který porovnává.

Pořadí prvků určených u iterátorů v rozsahu [First, Last) haldu seřazený podle operátor < if pro každou n v rozsahu [1,Last - First) predikátu!(*First < *(First + N)) is true.(První prvek je největší.) Její vnitřní struktura jinak známý pouze funkce šablony make_heap, pop_heap, a push_heap.Stejně jako seřazenou sekvenci predikátu funkce operátor <, nebo jakékoli náhrady, nesmí měnit buď jeho operandy a musí stanovit, přísné slabé řazení porovnává operandy.Musí zaručit, stejné bool vést pokaždé, když je vyhodnocena a pokud operand nahradí kopie buď operand ji musí zaručit stejný výsledek.

Algoritmy STL jsou umístěny v <algorithm> a <numeric> záhlaví souborů.

Viz také

Referenční dokumentace

Standardní šablona knihovny

Bezpečnostní vlákno v Standardní knihovna C++