|
JmΘno | Popis |
Algoritmy pou₧φvanΘ k pln∞nφ sekvence | |
fill | Pln∞nφ sekvence poΦßteΦnφmi hodnotami. |
fill_n | Pln∞nφ n pozic poΦßteΦnφ hodnotou. |
copy | Kopφrovßnφ sekvence z jinΘ sekvence. |
copy_backward | Kopφrovßnφ sekvence z jinΘ sekvence. |
generate | Inicializuje sekvenci pomocφ generßtoru. |
generate_n | Inicializuje n pozic pomocφ generßtoru. |
swap_ranges | Zam∞≥uje hodnoty ve dvou paralelnφch sekvencφch. |
Vyhledßvacφ algoritmy | |
find | Hledßnφ prvku odpovφdajφcφmu parametru. |
find_if | Hledßnφ prvku spl≥ujφcφho podmφnku. |
adjacent_find | Hledßnφ prvku shodujφcφho se s nßsledujφcφm prvkem. |
find_first_of | Hledßnφ prvnφho v²skytu jednΘ sekvence v jinΘ sekvenci. |
find_end | Hledßnφ poslednφho v²skytu podsekvence v sekvenci. |
search | Hledßnφ podsekvence v sekvenci. |
max_element | Hledßnφ maximßlnφ hodnoty v sekvenci. |
min_element | Hledßnφ minimßlnφ hodnoty v sekvenci. |
mismatch | Nalezenφ prvnφ neshody v paralelnφch sekvencφch. |
Transformace na mφst∞ | |
reverse | Obracφ prvky v sekvenci. |
replace | Nahrazuje specifikovanΘ hodnoty novou hodnotou. |
replace_if | Nahrazuje prvky vyhovujφcφ tvrzenφ. |
rotate | Rotuje prvky v sekvenci okolo bodu. |
partition | Rozd∞luje prvky do dvou skupin. |
stable_partition | Rozd∞lovßnφ chrßnφcφ p∙vodnφ po°adφ. |
next_permutation | Generuje permutaci v sekvenci. |
prev_permutation | Generuje permutaci v reverznφ sekvenci. |
inplace_merge | Spojuje dv∞ sousednφ sekvence v jednu. |
random_shuffle | Nßhodn∞ p°eskupφ prvky v sekvenci. |
Odstra≥ovacφ algoritmy | |
remove | Odstra≥uje prvky spl≥ujφcφ podmφnku. |
unique | Odstra≥uje vÜechny neprvnφ duplicitnφ hodnoty v sekvenci. |
Algoritmy generujφcφ skalßr | |
count | PoΦet prvk∙ s odpovφdajφcφ hodnotou. |
count_if | PoΦet prvk∙ vyhovujφcφch tvrzenφ. |
accumulate | Redukce sekvence na skalßrnφ hodnotu. |
inner_product | Vnit°nφ produkt dvou paralelnφch sekvencφ. |
equal | Test dvou sekvencφ na rovnost. |
lexicographical_compare | Porovnßvßnφ dvou sekvencφ. |
Algoritmy generujφcφ sekvence | |
transform | Transformuje ka₧d² prvek. |
partial_sum | Generuje sekvenci ΦßsteΦn²ch souΦt∙. |
adjacent_difference | Generuje sekvenci sousednφch rozdφl∙. |
R∙znΘ operace | |
for_each | Aplikuje funkci na ka₧d² prvek kolekce. |
Pro pou₧itφ v∞tÜiny obecn²ch algoritm∙ musφme vlo₧it p°φsluÜn² hlaviΦkov²
soubor. Hlavnφ funkce jsou definovßny v hlaviΦkovΘm souboru algorithm.
Funkce accumulate, inner_product, partial_sum a adjacent_difference
jsou definovßny v hlaviΦkovΘm souboru numeric.
# include <algorithm>
# include <numeric>
JmΘno | Popis |
╪adφcφ algoritmy | |
sort | ╪azenφ sekvence. |
stable_sort | ╪azenφ sekvence se zachovßnφm po°adφ ekvivalentnφch prvk∙. |
partial_sort | ╪azenφ pouze Φßsti sekvence. |
partial_sort_copy | ╚ßsteΦnΘ °azenφ s kopφrovßnφm. |
Hledßnφ n-tΘho nejv∞tÜφho prvku | |
nth_element | Lokalizace n-tΘho nejv∞tÜφho prvku. |
Binßrnφ hledßnφ | |
binary_search | Vyhledßvßnφ, nßvrat logickΘ hodnoty. |
lower_bound | Vyhledßvßnφ, nßvrat prvnφ pozice. |
upper_bound | Vyhledßvßnφ, nßvrat poslednφ pozice. |
equal_range | Vyhledßvßnφ, nßvrat obou pozic. |
SluΦovßnφ °azen²ch sekvencφ | |
merge | SlouΦenφ dvou se°azen²ch sekvencφ. |
Mno₧inovΘ operace | |
set_union | Sjednocenφ dvou mno₧in |
set_intersection | Pr∙nik dvou mno₧in. |
set_difference | Rozdφl dvou mno₧in. |
set_symmetric_difference | Symetrick² rozdφl dvou mno₧in. |
includes | ZjiÜt∞nφ, zda mno₧ina je podmno₧inou jinΘ mno₧iny. |
Operace s hromadou | |
make_heap | Zm∞na sekvence na hromadu. |
push_heap | P°idßnφ novΘ hodnoty do hromady |
pop_heap | Odstran∞nφ nejv∞tÜφ hodnoty z hromady |
sort_heap | Zm∞na hromady na °azenou kolekci |
╪azenΘ kolekce mohou b²t vytvß°eny pomocφ standardnφ knihovny r∙zn²mi zp∙soby. Nap°.
}
template <class U>
struct rebind { typedef allocator<U>
other; };
Ka₧d² typ ukazatele v tomto rozhranφ musφ mφt konverzi na void*.
Musφ b²t mo₧no pou₧φt v²sledek void* jako hodnotu this v
konstruktoru a destruktoru a v p°evodech na B<void>::pointer
(pro p°φsluÜnΘ B) pro pou₧itφ v B::deallocate().
Metoda rebind umo₧≥uje kontejneru vytvß°et alokßtor pro n∞kterΘ
typy poskytnutΘ jako parametr Üablony. Nap°. kontejner seznamu zφskßvß
implicitn∞ allocator<T>, ale seznam takΘ pot°ebuje alokovat list_nodes.
Kontejner m∙₧e vytvo°it alokßtor pro list_nodes mimo alokßtor pro
T
takto:
Allocator::rebind<list_node>::other list_node_allocator;
Nßsleduje popis metod, kterΘ alokßtor standardnφ knihovny musφ poskytovat:
my_allocator();
template <class U>
my_allocator(const
my_allocator<U>&);
template <class U>
operator=(const
my_allocator<U>&);
~my_allocator();
Konstruktory a destruktor.
pointer address(reference
r) const;
Vracφ adresu r jako typ pointer. Tato
a nßsledujφcφ funkce jsou pou₧ity pro p°evod odkaz∙ na ukazatele.
const_pointer address(const_reference
r) const;
Vracφ adresu r jako typ const_pointer.
pointer allocate(size_type
n);
Alokuje mφsto pro n hodnot T.
template <class T, class U>
types<T>::pointer allocate(size_type
n,
typename my_allocator<void>::const_pointer
hint = 0);
Alokuje mφsto pro hint hodnot T.
void deallocate(pointer);
Dealokace mφsta zφskanΘho volßnφm allocate.
size_type max_size();
Vracφ nejv∞tÜφ mo₧nΘ mφsto dostupnΘ pro volßnφ allocate.
void construct(pointer
p, const T& val);
Vytvß°φ objekt typu T na mφst∞ p.
Efekt je: new((void*)p) T(u);
void destroy(pointer
p);
Volß destruktor na hodnotu urΦenou p. Efekt
je: ((T*)p)->~T()
Nßsleduje popis funkcφ (ne metod), kterΘ alokßtor standardnφ knihovny
musφ poskytnout:
template <class T>
my_allocator::pointer
operator new(my_allocator::size_type,
my_allocator&);
Alokuje mφsto pro jeden objekt typu T pomocφ
my_allocator::allocate.
Efekt je: new((void*)x.template allocate<T>(1)) T;
template <class T, class U>
bool operator==(const
my_allocator<T>& a, const my_allocator<U>& b);
Vracφ true, pokud alokßtory b a a
mohou b²t ·sp∞Ün∞ zam∞n∞ny (tj. b m∙₧e b²t pou₧it k dealokaci a
a naopak).
template <class T, class U>
bool operator!=(const
my_allocator<T>& a, const my_allocator<U>& b);
Vracφ !(a == b).
Rogue Wave poskytuje alternativnφ rozhranφ alokßtoru pro ty p°ekladaΦe,
kterΘ nepodporujφ Üablony t°φd a Üablony metod. Tφm se ale zab²vat nebudeme.
|