C++/Set: Różnice pomiędzy wersjami
literowka w funkcjach reverse begin i reverse end (r na poczatku a nie na koncu) |
m nawigacja |
||
Linia 1: | Linia 1: | ||
== Opis == |
== 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. |
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. |
||
Linia 9: | Linia 6: | ||
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): |
||
{|class="wikitable" |
{|class="wikitable" |
||
! |
! |
||
Linia 228: | Linia 226: | ||
|---- |
|---- |
||
|} |
|} |
||
<noinclude>{{Nawigacja|C++| |
|||
[[../Listy|List & Slist]]| |
|||
[[../Map|Map]]| |
|||
}}</noinclude> |
Wersja z 14:45, 3 lut 2009
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 rbegin() | Zwraca reverse_iterator wskazujący na początek odwróconego zbioru. |
reverse_iterator rend() | 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. |