===== Opis kontenera hash_multimap ===== Autor: Grzegorz Mroziewicz **hash_multimap** Kontener hash_multimap jest mapą służącą do przechowywania par obiektów klucz-wartość. Wartość klucza //Key// nie musi być unikalna. Kontener pozwala przechowywać wiele elementów o zadanym kluczu oraz udostępnia metody do wyszukiwania i zliczania elementów o podanym kluczu. Wykorzystaniu funkcji mieszającej //HashFcn// pozwala osiągnąć lepszą złożoność czasową wyszukiwania elementów w mapie. ===== Typy szablonu ===== ^Nazwa^Opis^ |Key|Typ klucza dla pary elementów kontenera.| |Data|Typ wartości dla pary elementów kontenera.| |HashFcn|Funkcja mieszająca ( hash ).| |EqualKey | Funktor określający czy klucze są sobie równe ( equal_to ).| |Alloc | Allokator pamięci. | ===== Opis metod ===== ==== Kontruktory ==== * __hash_multimap()__ : kontruktor domyślny * __hash_multimap(size_type n)__ : konstruktor ze wskazanie ilości pojemników mapy //n// * __hash_multimap(size_type n, const hasher& h)__ : konstruktor ze wskazanie ilości pojemników mapy //n// i funkcji mieszającej //h// * __hash_multimap(size_type n, const hasher& h, const key_equal& k)__ : konstruktor ze wskazanie ilości pojemników mapy //n//, funkcji mieszającej //h// i binarnego predykatu do porównywania kluczy //k// * __hash_multimap(const hash_multimap&)__ : konstruktor kopiujący * template hash_multimap(InputIterator, InputIterator) : konstruktor inicjujący mapę kolekcją określoną przez iteratory wskazujące na jej początek i koniec * __template hash_multimap(InputIterator, InputIterator, size_type n)__ * __template hash_multimap(InputIterator, InputIterator, size_type n, const hasher& h)__ * __template hash_multimap(InputIterator, InputIterator, size_type n, const hasher& h, const key_equal& k)__ ==== Dodawanie elementów ==== * __iterator insert(const value_type& x)__ - Wstawia element //x// * __template void insert(InputIterator, InputIterator)__ - Wstawia kolekcję zdefiniowaną przez iteratory wskazujące na jej początek i koniec ==== Usuwanie elementów ==== * __void erase(iterator pos)__ : Usuwa element wskazany przez iterator //pos// * __size_type erase(const key_type& k)__ : Usuwa elementy identyfikowane kluczem //k// * __void erase(iterator first, iterator last)__ : Usuwa elementy z zakresu wskazanego iteratorami //first// - //last// * __void clear()__ : Czyści kolekcję ==== Wyszukiwanie elementów ==== * __const_iterator find(const key_type& k) const__ : Zwraca iterator wskazujący na element o kluczu //k// * __iterator find(const key_type& k)__ : Zwraca iterator wskazujący na element o kluczu //k// * __pair equal_range(const key_type& k) const__ : Zwraca parę iteratorów wskazujących na kolekcję elementów o kluczu //k// * __pair equal_range(const key_type& k)__ : Zwraca parę iteratorów wskazujących na kolekcję elementów o kluczu //k// * __size_type count(const key_type& k) const__ : Zwraca liczbę elementów kolekcji identyfikowanych kluczem //k// ==== Parametry kontenera ==== * __size_type size() const__ : Zwraca aktualny rozmiar mapy * __size_type max_size() const__ : Zwraca maksymalny dozwolony rozmiar mapy * __bool empty() const__ : Zwraca wartość //true// gdy mapa jest pusta * __size_type bucket_count() const__ : Zwraca ilość pojemników mapy * __void resize(size_type n)__ : Zmienia rozmiar pojemnika na wartość //n// * __hasher hash_funct() const__ : Zwraca obiekt udostepniający funkcję mieszającą mapy * __key_equal key_eq() const__ : Zwraca obiekt udostępniający binarny predykat używany do porównywania kluczy ==== Inne ==== * __void swap(hash_multimap&)__ : Zamienia zawartość dwóch kontenerów == Przykładowy program == {{:hash_multimap.cpp|}}