Udostępnij za pośrednictwem


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

unordered_map::allocator_type

Typ alokatora do zarządzania pamięcią.

unordered_map::const_iterator

Typ iteratora stałego dla kontrolowanej sekwencji.

unordered_map::const_local_iterator

Typ iteratora stałego przedziału dla kontrolowanej sekwencji.

unordered_map::const_pointer

Typ stałego wskaźnika do elementu.

unordered_map::const_reference

Typ stałego odwołania do elementu.

unordered_map::difference_type

Typ odległości ze znakiem między dwoma elementami.

unordered_map::hasher

Typ funkcji mieszania.

unordered_map::iterator

Typ iteratora dla kontrolowanej sekwencji.

unordered_map::key_equal

Typ funkcji porównywania.

unordered_map::key_type

Typ klucza sortowania.

unordered_map::local_iterator

Typ iteratora przedziału dla kontrolowanej sekwencji.

unordered_map::mapped_type

Typ mapowanej wartości skojarzonej z poszczególnymi kluczami.

unordered_map::pointer

Typ wskaźnika do elementu.

unordered_map::reference

Typ odwołania do elementu.

unordered_map::size_type

Typ odległości bez znaku między dwoma elementami.

unordered_map::value_type

Typ elementu.

Funkcja elementów członkowskich

Opis

unordered_map::at

Wyszukuje element z określonym kluczem.

unordered_map::begin

Określa początek kontrolowanej sekwencji.

unordered_map::bucket

Pobiera numer przedziału dla wartości klucza.

unordered_map::bucket_count

Pobiera liczbę przedziałów.

unordered_map::bucket_size

Pobiera rozmiar przedziału.

unordered_map::cbegin

Określa początek kontrolowanej sekwencji.

unordered_map::cend

Określa koniec kontrolowanej sekwencji.

unordered_map::clear

Usuwa wszystkie elementy.

unordered_map::count

Wyszukuje liczbę elementów pasujących do określonego klucza.

unordered_map::emplace

Dodaje element skonstruowany na miejscu.

unordered_map::emplace_hint

Dodaje element skonstruowany na miejscu, z podpowiedzią.

unordered_map::empty

Sprawdza, czy nie ma żadnych elementów.

unordered_map::end

Określa koniec kontrolowanej sekwencji.

unordered_map::equal_range

Wyszukuje zakres, który odpowiada określonemu kluczowi.

unordered_map::erase

Usuwa elementy z określonych pozycji.

unordered_map::find

Wyszukuje element, który odpowiada określonemu kluczowi.

unordered_map::get_allocator

Pobiera przechowywany obiekt alokatora.

unordered_map::hash_function

Pobiera przechowywany obiekt funkcji mieszania.

unordered_map::insert

Dodaje elementy.

unordered_map::key_eq

Pobiera przechowywany obiekt funkcji porównywania.

unordered_map::load_factor

Oblicza średnią liczbę elementów na przedział.

unordered_map::max_bucket_count

Pobiera maksymalną liczbę przedziałów.

unordered_map::max_load_factor

Pobiera lub ustawia maksymalną liczbę elementów na przedział.

unordered_map::max_size

Pobiera maksymalny rozmiar kontrolowanej sekwencji.

unordered_map::rehash

Przebudowuje tabelę mieszania.

unordered_map::size

Liczy liczbę elementów.

unordered_map::swap

Zamienia zawartości dwóch kontenerów.

unordered_map::unordered_map

Konstruuje obiekt kontenera.

Operator

Opis

unordered_map::operator[]

Znajduje lub wstawia element z określonym kluczem.

unordered_map::operator=

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

<unordered_map>

Bezpieczeństwo wątku w standardowej bibliotece C++

Standardowa biblioteka szablonów

Koncepcje

Kontenery