C++/Set: Różnice pomiędzy wersjami
Nie podano opisu zmian |
→Składniki: Poprawiona masa literówek i błędów gramatycznych. |
||
Linia 97: | Linia 97: | ||
|---- |
|---- |
||
|key_type |
|key_type |
||
|Typ klucza zbioru, |
|Typ klucza zbioru, powiązany z value_type. |
||
|---- |
|---- |
||
|key_compare |
|key_compare |
||
|Funkcjonał porównujący dwa klucze w celu uporządkowania. |
|Funkcjonał porównujący dwa klucze w celu uporządkowania. |
||
|---- |
|---- |
||
|value_compare |
|||
|vaule_type |
|||
|Funkcjonał porównujący dwie wartości w celu uporządkowania. |
|Funkcjonał porównujący dwie wartości w celu uporządkowania. |
||
|---- |
|---- |
||
Linia 124: | Linia 124: | ||
|---- |
|---- |
||
|const_iterator |
|const_iterator |
||
|Stały iterator używany do 'chodzenia'(iteracji) po zbiorze(tego samego typu co |
|Stały iterator używany do 'chodzenia'(iteracji) po zbiorze(tego samego typu co zwykły iterator). |
||
|---- |
|---- |
||
|reverse_iterator |
|reverse_iterator |
||
Linia 136: | Linia 136: | ||
|---- |
|---- |
||
|iterator end() |
|iterator end() |
||
|Zwraca iterator wskazujący na |
|Zwraca iterator wskazujący na koniec zbioru. |
||
|---- |
|---- |
||
|reverse_iterator beginr() |
|reverse_iterator beginr() |
||
Linia 151: | Linia 151: | ||
|---- |
|---- |
||
|bool empty() |
|bool empty() |
||
|Zwraca true gdy rozmiar zbioru |
|Zwraca true gdy rozmiar zbioru wynosi 0. |
||
|---- |
|---- |
||
|key_compare key_comp() |
|key_compare key_comp() |
||
Linia 187: | Linia 187: | ||
|---- |
|---- |
||
|iterator insert(iterator pos, const value_type& x) |
|iterator insert(iterator pos, const value_type& x) |
||
|Wstawia do zbioru element x |
|Wstawia do zbioru element x. Używa pos do wskazania miejsca, w którym ma być wstawiony. |
||
|---- |
|---- |
||
|template <class InputIterator> |
|template <class InputIterator> |
||
Linia 203: | Linia 203: | ||
|---- |
|---- |
||
|void clear() |
|void clear() |
||
|Kasuje wszystkie |
|Kasuje wszystkie elementy zbioru. |
||
|---- |
|---- |
||
|iterator find(const key_type& k) const |
|iterator find(const key_type& k) const |
||
|Znajduje element którego klucz wynosi k. |
|Znajduje element, którego klucz wynosi k. |
||
|---- |
|---- |
||
|size_type count(const key_type& k) const |
|size_type count(const key_type& k) const |
||
|Zwraca liczbę |
|Zwraca liczbę elementów, których klucz wynosi k. |
||
|---- |
|---- |
||
|iterator lower_bound(const key_type& k) const |
|iterator lower_bound(const key_type& k) const |
||
|Znajduje |
|Znajduje pierwszy element, którego klucz jest nie mniejszy od k. |
||
|---- |
|---- |
||
|iterator upper_bound(const key_type& k) const |
|iterator upper_bound(const key_type& k) const |
||
|Znajduje |
|Znajduje pierwszy element, którego klucz jest większy od k. |
||
|---- |
|---- |
||
|pair<iterator, iterator> |
|pair<iterator, iterator> |
||
Linia 222: | Linia 222: | ||
|---- |
|---- |
||
|bool operator==(const set&, const set&) |
|bool operator==(const set&, const set&) |
||
|Sprawdza dwa zbiory pod względem równości. Jest to funkcja globalna |
|Sprawdza dwa zbiory pod względem równości. Jest to funkcja globalna, nie składnikowa. |
||
|---- |
|---- |
||
|bool operator<(const set&,const set&) |
|bool operator<(const set&,const set&) |
||
|Porównanie leksykograficzne. Jest to funkcja globalna |
|Porównanie leksykograficzne. Jest to funkcja globalna, nie składnikowa. |
||
|---- |
|---- |
||
|} |
|} |
Wersja z 16:34, 23 lut 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):
Rodzaj kontenera | Opis | |
---|---|---|
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 |
Parametry
Parametr | Opis |
---|---|
Key | Klucz zbioru ten sam co typ wartości. Zdefiniowane także jako: set::key_type i set::value_type |
Compare | Funkcja porównująca klucze, według słabo rosnącego porządku którego argumenty są typu key_type;
zwraca true jeśli pierwszy argument jest wcześniejszy od drugiego, w przeciwnym razie zwraca false. Zdefiniowana także jako: set::key_compare i set::value_compare. |
Alloc | Alokator zbioru, używany do wewnętrznego zarządzania pamięcią. |
Prosty Przykład
#include <iostream> #include <string> #include <set> using namespace std; int main() { set<string> mapa; //deklaracja zbioru mapa mapa.insert("lublin"); mapa.insert("lodz"); mapa.insert("warszawa"); mapa.insert("krakow"); //dodawanie elem set<string>::iterator marker = mapa.find("warszawa"); //szuka elementu "warszawa" if (marker!=mapa.end()) { cout<<"znalazlem! "<<*marker<<endl; } for (marker=mapa.begin(); marker!=mapa.end(); marker++) cout << *marker << endl; system("pause"); return 0; }
Składniki
Składnik | Opis działania |
---|---|
value_type | Typ obiektu, T, przechowywany w zbiorze(secie). |
key_type | Typ klucza zbioru, powiązany z value_type. |
key_compare | Funkcjonał porównujący dwa klucze w celu uporządkowania. |
value_compare | 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 zwykły 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 koniec zbioru. |
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 wynosi 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. Używa 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 elementy 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ę elementów, których klucz wynosi k. |
iterator lower_bound(const key_type& k) const | Znajduje pierwszy element, którego klucz jest nie mniejszy od k. |
iterator upper_bound(const key_type& k) const | Znajduje pierwszy element, którego 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, nie składnikowa. |
bool operator<(const set&,const set&) | Porównanie leksykograficzne. Jest to funkcja globalna, nie składnikowa. |