To jest stara wersja strony!
Autor: Kamil Halicki
hash_multiset<Key, HashFcn, EqualKey, Alloc>
Wielozbiór haszujący jest kontenerem , który pozwala przechowywać wiele elementów o takiej samej wartości. hash_multiset czyli wielozbiór haszujący jest to kontener asocjacyjnym umożliwiający przechowywanie elementów które nie muszą być unikatowe oraz zapewniający szybkie wyszukiwanie i zliczanie elementów o podanym kluczu. Jest to zbiór elementów tak więc klucz i wartość danego elementu są takie same.
Dzięki wykorzystaniu tablicy mieszającej zamorytyzowany czas wykonania podstawowych operacji na kontenerze wynosi O(1).
Szablon kontenera jest parametryzowany następującymi typami:
| Nazwa | Opis |
|---|---|
| Key | Typ klucza oraz wartości elementów w kontenerze. Typ Key musi mieć zdefiniowaną operację przypisania. |
| HashFcn | Funkcja haszująca używana przez wielozbiór. Domyślnie wartość: hash<Key> |
| EqualKey | Binarny predykat definiujacy relację równoważności pomiędzy kluczami. Jest to funkcja (lub funktor) przyjmująca dwie argumenty typu Key oraz wracający true jeśli klucze są równe oraz false w przeciwnym przypadku. Domyślna wartość: equal_to<Key> |
| Alloc | Alokator używany do zarządzania pamięcią |
| Nazwa | Opis |
|---|---|
| value_type | Typ obiektów przechowywanych w wielozbiorze |
| key_type | Typ klucza elementów kontenera |
| hasher | Funkcja haszująca |
| key_equal | Obiekt funkcyjny porównujący klucze |
| pointer | Wskaźnik na typ value_type |
| reference | Referencja do typu value_type |
| const_reference | Stała referencja do typu value_type |
| size_type | Typ całkowity bez znaku |
| difference_type | Typ całkowity ze znakiem |
| iterator | Iterator używany do przechodzenia po elementach wielozbioru |
| const_iterator | Stały iterator kontenera |
| Nazwa | Opis | |
|---|---|---|
| iterator begin() | Zwraca iterator wskazujący na początek wielozbioru | |
| iterator end() const | Zwraca iterator wskazujący na koniec wielozbioru | |
| size_type size() const | Zwraca rozmiar wielozbioruReturns the size of the hash_multiset | |
| size_type max_size() const | Zwraca największy możliwy rozmiar kontenera | |
| bool empty() const | Zwraca true jeśli rozmiar wielozbióru wynosi 0 oraz false w przeciwnym przypadku | |
| size_type bucket_count() const | Zwraca liczbę kubełków używanych przez wielozbiór haszujący | |
| void resize(size_type n) | Zwiększa liczbę kubełków do wartości nie mniejszej niż n | |
| hasher hash_funct() const | Zwraca funkcję haszującą | |
| key_equal key_eq() const | Zwraca funkcję porównującą klucze | |
| hash_multiset() | Tworzy pusty wielozbiór | |
| hash_multiset(size_type n) | Tworzy pusty wielozbiór z przynajmniej n kubełkami | |
| hash_multiset(size_type n, const hasher& h) | Tworzy pusty wielozbiór z przynajmniej n kubełkami, używając funkcji haszujacej h | |
| hash_multiset(size_type n, const hasher& h, const key_equal& k) | Tworzy pusty wielozbiór z przynajmniej n kubełkami, używając funkcji haszujacej h oraz funkcją porównujacą k | |
| template <class InputIterator> hash_multiset(InputIterator, InputIterator) | Tworzy wielozbiór z kopii elementów pochodzących z podanego zakresu | |
| template <class InputIterator> hash_multiset(InputIterator, InputIterator, size_type n) | Tworzy wielozbiór z kopii elementów pochodzących z podanego zakresu posiadający przynajmniej n kubełków. | |
| template <class InputIterator> hash_multiset(InputIterator, InputIterator, size_type n, const hasher& h) | Tworzy wielozbiór z kopii elementów pochodzących z podanego zakresu posiadający przynajmniej n kubełków, używając | funkcji haszującej h. |
| template <class InputIterator> hash_multiset(InputIterator, InputIterator, size_type n, const hasher& h, const key_equal& k) | Tworzy wielozbiór z kopii elementów pochodzących z podanego zakresu posiadający przynajmniej n kubełków, używając funkcji haszującej h oraz funkcji porównującej k | |
| hash_multiset(const hash_multiset&) | Konstruktor kopiujący | |
| hash_multiset& operator=(const hash_multiset&) | Operator przypisania | |
| void swap(hash_multiset&) | Zamienia zawartość dwóch wielozbiorów | |
| iterator insert(const value_type& x) | Wstawia x do kontenera | |
| template <class InputIterator> void insert(InputIterator, InputIterator) | Wstawia podany zakres do wielozbioru | |
| void erase(iterator pos) | Usuwa element wskazywany przez pos | |
| size_type erase(const key_type& k) | Usuwa element którego kluczem jest k | |
| void erase(iterator first, iterator last) | Usuwa wszystkie elementy w podanym zakresie | |
| void clear() | Usuwa wszystkie elementy z kontenera | |
| iterator find(const key_type& k) const | Znajduje element o kluczu k | |
| size_type count(const key_type& k) const | Podaje liczbę wystąpień elementów o kluczu k | |
| equal_range(const key_type& k) const | Znajduje zakrez zawierający wszystkie elementy o kluczu k |
| Nazwa | Opis |
|---|---|
| bool operator==(const hash_multiset&, const hash_multiset&) | Porównuje czy dwia wielozbiory są równe. |