Sdílet prostřednictvím


unordered_set – třída

Třída šablony popisuje objekt, který určuje různé sekvence prvků typu const Key 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 slouží jako klíč řazení i hodnota.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 Hash = std::hash<Key>,
    class Pred = std::equal_to<Key>,
    class Alloc = std::allocator<Key> >
    class unordered_set;

Parametry

Parametr

Popis

Key

Klíčový typ

Hash

Typ objektu hashovací funkce

Pred

Typ objektu funkce porovnání rovnosti

Alloc

Třída alokátoru

Členy

Definice typu

Popis

unordered_set::allocator_type

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

unordered_set::const_iterator

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

unordered_set::const_local_iterator

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

unordered_set::const_pointer

Typ konstantního ukazatele na prvek

unordered_set::const_reference

Typ konstantního odkazu na prvek

unordered_set::difference_type

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

unordered_set::hasher

Typ hashovací funkce

unordered_set::iterator

Typ iterátoru řízené sekvence

unordered_set::key_equal

Typ funkce porovnání

unordered_set::key_type

Typ klíče řazení

unordered_set::local_iterator

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

unordered_set::pointer

Typ ukazatele na prvek

unordered_set::reference

Typ odkazu na prvek

unordered_set::size_type

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

unordered_set::value_type

Typ prvku

Členská funkce

Popis

unordered_set::begin

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

unordered_set::bucket

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

unordered_set::bucket_count

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

unordered_set::bucket_size

Získá velikost kbelíku.

unordered_set::cbegin

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

unordered_set::cend

Určuje konec řízené sekvence.

unordered_set::clear

Odebere všechny prvky.

unordered_set::count

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

unordered_set::emplace

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

unordered_set::emplace_hint

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

unordered_set::empty

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

unordered_set::end

Určuje konec řízené sekvence.

unordered_set::equal_range

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

unordered_set::erase

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

unordered_set::find

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

unordered_set::get_allocator

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

unordered_set::hash_function

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

unordered_set::insert

Přidá prvky.

unordered_set::key_eq

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

unordered_set::load_factor

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

unordered_set::max_bucket_count

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

unordered_set::max_load_factor

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

unordered_set::max_size

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

unordered_set::rehash

Znovu vytvoří hashovací tabulku.

unordered_set::size

Spočítá počet prvků.

unordered_set::swap

Zamění obsah dvou kontejnerů.

unordered_set::unordered_set

Sestaví objekt kontejneru.

Operátory

Popis

unordered_set::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_set::key_equal a objektu hashovací funkce typu unordered_set::hasher.Přístup k prvnímu uloženému objektu je možný voláním členské funkce unordered_set::key_eq(); a ke druhému uloženému objektu voláním členské funkce unordered_set::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_multiset – třída objekt třídy šablony unordered_set 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_set::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_set::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_set>

Obor názvů: std

Viz také

Referenční dokumentace

<unordered_set>

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

Standardní knihovna šablon

Koncepty

Kontejnery