===== Opis kontenera hash_multiset ===== Autor: Kamil Halicki **hash_multiset** 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| |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| |Alloc | Alokator używany do zarządzania pamięcią | ====Typy==== ^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| ====Metody==== ^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 hash_multiset(InputIterator, InputIterator) |Tworzy wielozbiór z kopii elementów pochodzących z podanego zakresu| |template 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 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 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 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| |pair |equal_range(const key_type& k) const |Znajduje zakrez zawierający wszystkie elementy o kluczu k| ====Funkcje globalne==== ^Nazwa^Opis^ |bool operator==(const hash_multiset&, const hash_multiset&) |Porównuje czy dwia wielozbiory są równe. |