unordered_map — Klasa
Klasa szablonu opisuje obiekt, który kontroluje różne długości sekwencji elementów typu std::pair<const Key, Ty>.Sekwencja jest słabo uporządkowana według funkcji mieszania, która dzieli sekwencję na uporządkowany zestaw podsekwencji, zwanych przedziałami, segmentami lub pakietami.W ramach każdego przedziału funkcja porównania określa, czy jakaś para elementów ma równoważną kolejność.Każdy element przechowuje dwa obiekty, klucz sortowania i wartość.Sekwencja jest reprezentowana w sposób, który pozwala na wyszukiwanie, wstawianie i usuwanie dowolnego elementu z wielu operacji, które mogą być niezależne od liczby elementów w sekwencji (stały czas), co najmniej kiedy wszystkie przedziały są w przybliżeniu jednakowej długości.W najgorszym przypadku, gdy wszystkie elementy znajdują się w jednym przedziale, liczba operacji jest proporcjonalna do liczby elementów w sekwencji (liniowy czas).Ponadto, wstawianie elementu nie unieważnia iteratorów, a usuwanie elementu unieważnia tylko te iteratory, które wskazują na usunięty element.
template<class Key,
class Ty,
class Hash = std::hash<Key>,
class Pred = std::equal_to<Key>,
class Alloc = std::allocator<std::pair<const Key, Ty> > >
class unordered_map;
Parametry
Parametr |
Opis |
Key |
Typ klucza. |
Ty |
Typ mapowany. |
Hash |
Typ obiektu funkcji mieszania. |
Pred |
Typ obiektu funkcji porównywania równości. |
Alloc |
Klasa alokatora. |
Elementy członkowskie
Definicja typu |
Opis |
Typ alokatora do zarządzania pamięcią. |
|
Typ iteratora stałego dla kontrolowanej sekwencji. |
|
Typ iteratora stałego przedziału dla kontrolowanej sekwencji. |
|
Typ stałego wskaźnika do elementu. |
|
Typ stałego odwołania do elementu. |
|
Typ odległości ze znakiem między dwoma elementami. |
|
Typ funkcji mieszania. |
|
Typ iteratora dla kontrolowanej sekwencji. |
|
Typ funkcji porównywania. |
|
Typ klucza sortowania. |
|
Typ iteratora przedziału dla kontrolowanej sekwencji. |
|
Typ mapowanej wartości skojarzonej z poszczególnymi kluczami. |
|
Typ wskaźnika do elementu. |
|
Typ odwołania do elementu. |
|
Typ odległości bez znaku między dwoma elementami. |
|
Typ elementu. |
Funkcja elementów członkowskich |
Opis |
Wyszukuje element z określonym kluczem. |
|
Określa początek kontrolowanej sekwencji. |
|
Pobiera numer przedziału dla wartości klucza. |
|
Pobiera liczbę przedziałów. |
|
Pobiera rozmiar przedziału. |
|
Określa początek kontrolowanej sekwencji. |
|
Określa koniec kontrolowanej sekwencji. |
|
Usuwa wszystkie elementy. |
|
Wyszukuje liczbę elementów pasujących do określonego klucza. |
|
Dodaje element skonstruowany na miejscu. |
|
Dodaje element skonstruowany na miejscu, z podpowiedzią. |
|
Sprawdza, czy nie ma żadnych elementów. |
|
Określa koniec kontrolowanej sekwencji. |
|
Wyszukuje zakres, który odpowiada określonemu kluczowi. |
|
Usuwa elementy z określonych pozycji. |
|
Wyszukuje element, który odpowiada określonemu kluczowi. |
|
Pobiera przechowywany obiekt alokatora. |
|
Pobiera przechowywany obiekt funkcji mieszania. |
|
Dodaje elementy. |
|
Pobiera przechowywany obiekt funkcji porównywania. |
|
Oblicza średnią liczbę elementów na przedział. |
|
Pobiera maksymalną liczbę przedziałów. |
|
Pobiera lub ustawia maksymalną liczbę elementów na przedział. |
|
Pobiera maksymalny rozmiar kontrolowanej sekwencji. |
|
Przebudowuje tabelę mieszania. |
|
Liczy liczbę elementów. |
|
Zamienia zawartości dwóch kontenerów. |
|
Konstruuje obiekt kontenera. |
Operator |
Opis |
Znajduje lub wstawia element z określonym kluczem. |
|
Kopiuje tabelę mieszania. |
Uwagi
Obiekt porządkuje kontrolowaną sekwencję przez wywołanie dwóch przechowywanych obiektów, obiektu funkcji porównywania typu unordered_map::key_equal i obiektu funkcji mieszania typu unordered_map::hasher.Dostęp do pierwszego przechowywanego obiektu uzyskuje się wywołanie funkcji elementu członkowskiego unordered_map::key_eq(); a dostęp do drugiego przechowywanego obiektu uzyskuje się przez wywołanie funkcji elementu członkowskiego unordered_map::hash_function().W szczególności, dla wszystkich wartości X i Y typu Key, wywołanie key_eq()(X, Y) zwraca wartość true tylko wtedy, gdy dwie wartości argumentu mają równoważną kolejność; wywołanie hash_function()(keyval) daje w wyniku rozkład wartości typu size_t.W odróżnieniu od klasy szablonu unordered_multimap — Klasa, obiekt klasy szablonu unordered_map zapewnia, że key_eq()(X, Y) ma zawsze wartość false dla którychkolwiek dwóch elementów kontrolowanej sekwencji. (Klucze są unikatowe).
Obiekt przechowuje również współczynnik maksymalnego obciążenia, który określa maksymalną żądaną średnią liczbę elementów na przedział.Jeśli wstawianie elementu powoduje, że unordered_map::load_factor() przekracza współczynnik maksymalnego obciążenia, kontener zwiększa liczbę przedziałów i odbudowuje tabelę mieszania, stosownie do potrzeb.
Rzeczywista kolejność elementów w kontrolowanej sekwencji zależy od funkcji mieszania, funkcji porównywania, kolejności wstawiania, współczynnika maksymalnego obciążenia i bieżącej liczby przedziałów.Na ogół nie można przewidzieć kolejności elementów w kontrolowanej sekwencji.Można jednak zawsze mieć pewność, że dowolny podzbiór elementów, które mają równoważną kolejność, są obok siebie w kontrolowanej sekwencji.
Obiekt przydziela i zwalnia pamięć dla kontrolowanej sekwencji za pośrednictwem przechowywanego obiektu alokatora typu unordered_map::allocator_type.Taki obiekt alokatora musi mieć ten sam interfejs zewnętrzny co obiekt klasy szablonu allocator.Należy zauważyć, że przechowywany obiekt alokatora nie jest kopiowany po przypisaniu obiektu kontenera.
Wymagania
Nagłówek: <unordered_map>
Przestrzeń nazw: std
Zobacz też
Informacje
Bezpieczeństwo wątku w standardowej bibliotece C++
Standardowa biblioteka szablonów