C++/Set: Różnice pomiędzy wersjami

Z Wikibooks, biblioteki wolnych podręczników.
< C++
Usunięta treść Dodana treść
Nie podano opisu zmian
Nie podano opisu zmian
Linia 5: Linia 5:
Zarówno typ wartosci tych elementów jak i typ wartości klucza są takie same.
Zarówno typ wartosci tych elementów jak i typ wartości klucza są takie same.
Drzewiasta struktura zapewnia szybkie wyszukiwanie, jednak są z tym związane także pewne mankamenty, mianowicie modyfikacja elementu jest możliwa tylko w taki sposób, że kasujemy stary element, a następnie wstawiamy w to miejsce nowy.
Drzewiasta struktura zapewnia szybkie wyszukiwanie, jednak są z tym związane także pewne mankamenty, mianowicie modyfikacja elementu jest możliwa tylko w taki sposób, że kasujemy stary element, a następnie wstawiamy w to miejsce nowy.
{|class="wikitable"
|----
|----
|}
Korzystając z terminologii STL-a zbiory sa tzw. kontenerami asocjacyjnymi
Korzystając z terminologii STL-a zbiory sa tzw. kontenerami asocjacyjnymi
(o zmiennej długości, pozwalającymi na operowanie elementami przy użyciu kluczy):
(o zmiennej długości, pozwalającymi na operowanie elementami przy użyciu kluczy):

Wersja z 16:30, 31 sty 2008

Opis

Zbiory są jednym z kontenerów biblioteki STL, których struktura oparta jest na drzewach. Elementy które są w nich przechowywane są posortowane, według pewnego klucza. Zarówno typ wartosci tych elementów jak i typ wartości klucza są takie same. Drzewiasta struktura zapewnia szybkie wyszukiwanie, jednak są z tym związane także pewne mankamenty, mianowicie modyfikacja elementu jest możliwa tylko w taki sposób, że kasujemy stary element, a następnie wstawiamy w to miejsce nowy.

Korzystając z terminologii STL-a zbiory sa tzw. kontenerami asocjacyjnymi (o zmiennej długości, pozwalającymi na operowanie elementami przy użyciu kluczy): |---- 1)prostymi- key_type i value_type są tego samego typu, |---- 2)posortowanymi- rosnąco względem klucza, |---- 3)unikalnymi- w danym zbiorze nie mogą wsytępowac dwa elementy o tym samym kluczu. |----



Składniki

Składnik Opis działania
value_type Typ obiektu, T, przechowywany w zbiorze(secie).
key_type Typ klucza zbioru, powizany z value_type.
key_compare Funkcjonał porównujący dwa klucze w celu uporządkowania.
vaule_type Funkcjonał porównujący dwie wartości w celu uporządkowania.
pointer Wskaźnik na T.
reference Referencja do T.
const_reference Stała referencja do T.
size_type Integralny typ bez znaku.
difference_type Integralny typ ze znaku.
iterator Iterator używany do 'chodzenia' po zbiorze.
const_iterator Stały iterator używany do 'chodzenia'(iteracji) po zbiorze(tego samego typu co zwykly iterator).
reverse_iterator Iterator używany do 'chodzenia do tyłu'(iteracji wstecznej) po zbiorze.
const_reverse_iterator Stały iterator używany do 'chodzenia do tyłu'(iteracji wstecznej) po zbiorze.
iterator begin() Zwraca iterator wskazujący na początek zbioru.
iterator end() Zwraca iterator wskazujący na konieczbioru.
reverse_iterator beginr() Zwraca reverse_iterator wskazujący na początek odwróconego zbioru.
reverse_iterator endr() Zwraca reverse_iterator wskazujący na koniec odwróconego zbioru.
size_type size() Zwraca rozmiar zbioru.
size_type max_size() Zwraca największy możliwy rozmiar zbioru.
bool empty() Zwraca true gdy rozmiar zbioru wynois 0.
key_compare key_comp() Zwraca key_compare obiektu używanego przez zbiór.
value_compare value_comp() Zwraca value_compare obiektu używanego przez zbiór.
set() Tworzy pusty zbiór.
set(const key_compare& comp) Tworzy pusty zbiór, używając comp jako key_compare obiektu(klucza porównującego).
template <class InputIterator>

set(InputIterator f, InputIterator l)

Tworzy zbiór zawierający kopie zakresu.
template <class InputIterator>

set(InputIterator f, InputIterator l, const key_compare& comp)

Tworzy zbiór zawierający kopie zakresu, używając comp jako key_compare obiektu.
set(const set&) Konstruktor kopiujący.
set& operator=(const set&) Operator przypisania.
void swap(set&) Zamienia zawartość dwóch zbiorów.
pair<iterator, bool>

insert(const value_type& x)

Wstawia do zbioru element x.
iterator insert(iterator pos, const value_type& x) Wstawia do zbioru element x, uzywa pos do wskazania miejsca w którym ma być wstawiony.
template <class InputIterator>

void insert(InputIterator, InputIterator)

Wstawia do zbioru zakres.
void erase(iterator pos) Kasuje element wskazywany przez pos.
size_type erase(const key_type& k) Kasuje element którego kluczem jest k.
void erase(iterator first, iterator last) Kasuje wszystkie elementy z danego zakresu.
void clear() Kasuje wszystkie elemnty zbioru.
iterator find(const key_type& k) const Znajduje element którego klucz wynosi k.
size_type count(const key_type& k) const Zwraca liczbę elemtów których klucz wynosi k.
iterator lower_bound(const key_type& k) const Znajduje pierwsyz element któreog klucz jest nie mniejszy od k.
iterator upper_bound(const key_type& k) const Znajduje pierwsyz element któreog klucz jest większy od k.
pair<iterator, iterator>

equal_range(const key_type& k) const

Znajduje zakres zawierający wszystkie elementy o kluczu k.
bool operator==(const set&, const set&) Sprawdza dwa zbiory pod względem równości. Jest to funkcja globalna , nei składnikowa.
bool operator<(const set&,const set&) Porównanie leksykograficzne. Jest to funkcja globalna , nie składnikowa.