Algoritmy
Algoritmy jsou základní součástí knihovny standardních šablon.Algoritmy nefungují s kontejnery, sami, ale s iterátorů.Proto stejný algoritmus mohou využívat většinu není-li všechny STL kontejnery.Tato část popisuje konvence a terminologie algoritmů STL.
Poznámky
Popis funkce šablony algoritmus zaměstnat několik vět zkrácený zápis:
Se slova "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; lze uložit A v objektu N (N = A), zvýší hodnotu objektu nula nebo vícekrát (++N), a mít objekt porovnat rovná B po omezený počet kroků (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ícekrát, dokud je rovna hodnotě B.V případě N == B není v rozsahu.
Frázi "nejnižší hodnota N v rozsahu [A, B) tak, aby X" znamená, že podmínka X je určena pro každý N v rozsahu [A, B) do stavu X je splněna.
Fráze "nejvyšší hodnota N v rozsahu [A, B) tak, aby X znamená, že X je určena pro každý N v rozsahu [A, B).Funkce jsou uloženy v K kopie N pokaždé, když je podmínka X je splněna.Pokud dojde k takové úložiště, funkce, nahradí výsledná hodnota N, který se rovná B, s hodnotou K.Obousměrný nebo iterační náhodný přístup, však jej může také znamenat, že N začíná s nejvyšší hodnotou 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.Funkce nutně vyhodnotí operátor**–** Pokud si musí stanovit tyto hodnoty.Totéž platí i pro výrazy jako X + N a X - N, kde N je typ integer.
Proveďte několik algoritmů pomocí predikátu, která provádí porovnání párový, jako s operator==, na základě výnosu bool výsledek.Predikátu funkce operator==, nebo žádné náhrady, nesmí měnit buď jeho operandy.Musí zaručit, stejné bool výsledek pokaždé, když je vyhodnocena, pokud kopírovat buď operandu operand nahradí jej musí zaručit stejný výsledek.
Proveďte několik algoritmů pomocí predikátu, která se musí ukládat přísné slabé řazení dvojice prvků z řady.For the predicate pr(X, Y):
Pevné znamená, že pr(X, X) je false.
Slabým znamená, že X a Y mají ekvivalentní řazení if!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).
Některé z těchto algoritmů implicitně, použijte predikát X<Y.Ostatní predikáty, které obvykle splňují přísné slabým řazení požadavku jsou X>Y, méně(X, Y), a greater(X, Y).Poznámka, nicméně, predikáty, jako X<= Y a X>= Y tento požadavek nesplňuje.
Pořadí prvků určených iterátorů v rozsahu [First, Last) je posloupnost seřazených podle operátor**<** if pro každou N z intervalu [0,Last - First) a pro každou M v rozsahu (N,Last - First) predikát!(*(First + M) < *(First + N)) is true. (Všimněte si, že prvky jsou seřazeny ve vzestupném pořadí.) Predikátu funkce operátor<, nebo žádné náhrady, nesmí měnit buď jeho operandy.Musí zaručit, stejné bool výsledek pokaždé, když je vyhodnocena, pokud kopírovat buď operandu operand nahradí jej musí zaručit stejný výsledek.Kromě toho musí ukládat přísné slabé řazení operandy, které srovnává.
Pořadí prvků určených iterátorů v rozsahu [First, Last) haldu objednané operátor< if pro každou N v rozsahu [1,Last - First) predikát!(*First< *(First + N)) is true. (První prvek je největší). Její vnitřní struktura je označováno pouze na funkce šablony make_heap, pop_heap, a push_heap.Stejně jako u seřazenou sekvenci predikátu funkce operátor<, nebo žádné náhrady, nesmí měnit jeden z operandů a musí stanovit, přísné slabé řazení porovná operandy.Musí zaručit, stejné bool výsledek pokaždé, když je vyhodnocena, pokud kopírovat buď operandu operand nahradí jej musí zaručit stejný výsledek.
Algoritmů STL jsou umístěny v <algorithm> a <numeric> soubory hlaviček.