Sdílet prostřednictvím


unordered_map – třída

Třída šablony popisuje objekt, který určuje různé sekvence prvků typu std::pair<const Key, Ty> s různými délkami.Sekvence je slabě seřazená podle funkce hash, která sekvenci rozděluje do uspořádané sady dílčích sekvencí, které se nazývají kbelíky.V rámci každého kbelíku funkce porovnání určuje, zda má nějaká dvojice prvků odpovídající řazení.Každý prvek obsahuje dva objekty, klíč řazení a hodnotu.Sekvence je reprezentována způsobem, který umožňuje vyhledat, vložit a odebrat libovolný prvek s několika operacemi, které mohou být nezávislé na počtu prvků v sekvenci (konstantní čas), alespoň pokud všechny kbelíky mají přibližně stejnou délku.V nejhorším případě platí, že když jsou všechny prvky v jednom kbelíku, je počet operací úměrný počtu prvků v sekvenci (lineární čas).Vkládání prvků navíc nezruší platnost žádných iterátorů a odstranění prvku zruší platnost pouze těch iterátorů, které odkazují na odstraněný prvek.

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

Popis

Key

Klíčový typ

Ty

Mapovaný typ

Hash

Typ objektu hashovací funkce

Pred

Typ objektu funkce porovnání rovnosti

Alloc

Třída alokátoru

Členy

Definice typu

Popis

unordered_map::allocator_type

Typ alokátoru pro správu úložiště

unordered_map::const_iterator

Typ konstantního iterátoru řízené sekvence

unordered_map::const_local_iterator

Typ konstantního iterátoru kbelíku řízené sekvence

unordered_map::const_pointer

Typ konstantního ukazatele na prvek

unordered_map::const_reference

Typ konstantního odkazu na prvek

unordered_map::difference_type

Typ vzdálenosti se znaménkem mezi dvěma prvky

unordered_map::hasher

Typ hashovací funkce

unordered_map::iterator

Typ iterátoru řízené sekvence

unordered_map::key_equal

Typ funkce porovnání

unordered_map::key_type

Typ klíče řazení

unordered_map::local_iterator

Typ iterátoru kbelíku řízené sekvence

unordered_map::mapped_type

Typ mapované hodnoty přiřazené ke každému klíči

unordered_map::pointer

Typ ukazatele na prvek

unordered_map::reference

Typ odkazu na prvek

unordered_map::size_type

Typ vzdálenosti bez znaménka mezi dvěma prvky

unordered_map::value_type

Typ prvku

Členská funkce

Popis

unordered_map::at

Vyhledá prvek se zadaným klíčem.

unordered_map::begin

Určuje začátek řízené sekvence.

unordered_map::bucket

Získá číslo kbelíku pro hodnotu klíče.

unordered_map::bucket_count

Získá počet kbelíků.

unordered_map::bucket_size

Získá velikost kbelíku.

unordered_map::cbegin

Určuje začátek řízené sekvence.

unordered_map::cend

Určuje konec řízené sekvence.

unordered_map::clear

Odebere všechny prvky.

unordered_map::count

Zjistí počet prvků odpovídající zadanému klíči.

unordered_map::emplace

Přidá prvek vytvořený v místě.

unordered_map::emplace_hint

Přidá prvek vytvořený v místě s nápovědou.

unordered_map::empty

Zkouší, zda nejsou přítomny žádné prvky.

unordered_map::end

Určuje konec řízené sekvence.

unordered_map::equal_range

Najde rozsah, který odpovídá zadanému klíči.

unordered_map::erase

Odebere prvky v určených pozicích.

unordered_map::find

Vyhledá prvek, který odpovídá zadanému klíči.

unordered_map::get_allocator

Získá uložený objekt alokátoru.

unordered_map::hash_function

Získá uložený objekt hashovací funkce.

unordered_map::insert

Přidá prvky.

unordered_map::key_eq

Získá uložený objekt funkce porovnání.

unordered_map::load_factor

Spočítá průměrný počet prvků na kbelík.

unordered_map::max_bucket_count

Získá maximální počet kbelíků.

unordered_map::max_load_factor

Získá nebo nastaví maximální počet prvků na kbelík.

unordered_map::max_size

Získá maximální velikost řízené sekvence.

unordered_map::rehash

Znovu vytvoří hashovací tabulku.

unordered_map::size

Spočítá počet prvků.

unordered_map::swap

Zamění obsah dvou kontejnerů.

unordered_map::unordered_map

Sestaví objekt kontejneru.

Operátor

Popis

unordered_map::operator[]

Vyhledá nebo vloží prvek se zadaným klíčem.

unordered_map::operator=

Zkopíruje tabulku hash.

Poznámky

Objekt seřadí sekvenci, kterou ovládá, voláním dvou uložených objektů: objektu funkce porovnání typu unordered_map::key_equal a objektu hashovací funkce typu unordered_map::hasher.Přístup k prvnímu uloženému objektu je možný voláním členské funkce unordered_map::key_eq(); a ke druhému uloženému objektu voláním členské funkce unordered_map::hash_function().Konkrétně pro všechny hodnoty X a Y typu Key volání key_eq()(X, Y) vrátí hodnotu true, pouze pokud hodnoty dvou argumentů mají stejné pořadí; volání hash_function()(keyval) získá distribuci hodnot typu size_t.Na rozdíl od třídy šablony unordered_multimap – třída objekt třídy šablony unordered_map zajistí, že key_eq()(X, Y) má vždy hodnotu false pro jakékoli dva prvky řízené sekvence. (Klíče jsou jedinečné).

Objekt také uchovává faktor maximálního zatížení, který určuje maximální požadovaný průměrný počet prvků na kbelík.Pokud vložení prvku způsobí, že unordered_map::load_factor() překročí faktor maximálního zatížení, kontejner zvýší počet kbelíků a podle potřeby znovu vytvoří tabulku hash.

Skutečné pořadí prvků v řízené sekvenci závisí na hashovací funkci, funkci porovnání, pořadí vkládání, faktoru maximálního zatížení a aktuálním počtu kbelíků.Pořadí prvků v řízené sekvenci obecně nelze předvídat.Můžete si však vždy být jisti, že všechny dílčí množiny prvků, které mají ekvivalentní řazení, v řízené sekvenci sousedí.

Objekt přiděluje a uvolňuje úložiště pro sekvenci, kterou řídí, prostřednictvím uloženého objektu alokátoru typu unordered_map::allocator_type.Takový objekt alokátoru musí mít stejné externí rozhraní jako objekt třídy šablony allocator.Všimněte si, že uložený objekt alokátoru není zkopírován při přiřazení objektu kontejneru.

Požadavky

Hlavička: <unordered_map>

Obor názvů: std

Viz také

Referenční dokumentace

<unordered_map>

Bezpečný přístup z více vláken ve standardní knihovně C++

Standardní knihovna šablon

Koncepty

Kontejnery