Sdílet prostřednictvím


hash_set – třída

[!POZNÁMKA]

Toto rozhraní API je zastaralé.Alternativou je unordered_set – třída.

Hash_set třída kontejneru je rozšíření pro šablonu knihovny STL (Standard) a slouží pro uskladnění a rychlému načítání dat z kolekce, ve kterém hodnot obsažených prvků jsou jedinečné a sloužit jako hodnoty klíče.

template <
   class Key, 
   class Traits=hash_compare<Key, less<Key> >, 
   class Allocator=allocator<Key> 
>
class hash_set

Parametry

  • Key
    Typ datových prvků v hash_set.

  • Traits
    Typ, který obsahuje dvě funkce objektů, jeden z třídy porovnat tj binárního predikátu moci porovnat dvě hodnoty elementu jako klíče řazení pro určení jejich relativní pořadí a funkce hash tj unárního predikátu mapování hodnot klíčových prvků na nepodepsané celá čísla typu size_t.Tento argument je nepovinný a hash_compare*<klíče,* méně*<klíče >>* je výchozí hodnota.

  • Allocator
    Typ, který představuje uloženou přidělování objekt, který zapouzdří informace o přidělování a navracení zpět paměti hash_set.Tento argument je nepovinný a výchozí hodnota je přidělování*<klíče>.*

Poznámky

Hash_set je:

  • Asociativní kontejner, což je kontejner proměnné velikosti, který podporuje efektivní načtení hodnoty prvku založené na přiřazené hodnotě klíče.Dále je jednoduché asociativní kontejneru, protože jeho hodnoty prvku jsou jeho klíče.

  • Oboustranný, protože poskytuje obousměrný iterátor pro přístup k jeho prvkům.

  • Používá algoritmus hash, protože jeho prvky jsou seskupeny do bloků podle hodnoty hashovací funkce použité na hodnoty klíčů prvků.

  • Jedinečný v tom smyslu, že každý z jeho prvků musí mít jedinečný klíč.Hash_set je také jednoduché asociativní kontejneru, a proto jsou také jedinečné prvky.

  • Třída šablony protože poskytuje funkce je obecný a to nezávisle na určitý typ dat obsažených prvků nebo klíče.Datové typy použité pro prvky a klíče jsou místo toho zadány jako parametry v šabloně třídy společně s funkcí porovnání a alokátorem.

Hlavní výhodou hashování oproti řazení je vyšší výkon, úspěšné hashování provede vkládání, odstranění a vyhledání v konstantní průměrné době ve srovnání s dobou úměrnou logaritmu počtu prvků v kontejneru pro techniky třídění.Hodnoty elementu v sadě nelze přímo změnit.Místo toho musíte odstranit staré hodnoty a vložit prvky s novými hodnotami.

Volba typu kontejneru by měla obecně vycházet z typu vyhledávání a vkládání vyžadovaného aplikací.Asociativní kontejnery algoritmu hash jsou optimalizovány pro operace vyhledávání, vkládání a odstranění.Členské funkce, které explicitně podporují tyto operace, jsou účinné při použití dobře navržené hashovací funkce, provedené v čase konstantního průměru a nejsou závislé na počtu prvků v kontejneru.Dobře navržená hashovací funkce vytváří rovnoměrné rozdělení hashovaných hodnot a minimalizuje počet kolizí, kde ke kolizi dojde, pokud jsou hodnoty odlišných hodnot klíčů mapovány na stejnou hashovanou hodnotu.V nejhorším případě s nejhorší možnou hashovací funkcí je počet operací úměrný počtu prvků v sekvenci (lineární čas).

Aplikace jsou splněny podmínky přiřazení hodnoty k jejich klíče by měl být hash_set asociativní kontejneru dle výběru.Prvky hash_set jsou jedinečné a sloužit jako vlastní klíče řazení.Model pro tento typ struktury je uspořádaný seznam, například slova, v nichž slova může dojít pouze jednou.Pokud bylo povoleno více výskytů jednoho slova, je objekt hash_multiset odpovídající strukturou kontejneru.Pokud nemusí být připojen k seznamu slov jedinečný klíč hodnoty, hash_map by bylo vhodné struktury obsahující tato data.Pokud místo klíče nejsou jedinečné, by bylo hash_multimap kontejneru dle výběru.

Objednávky hash_set sekvence ovládá pomocí volání uložené hodnoty hash znaky objekt typu value_compare.K tomuto uloženému objektu lze přistupovat voláním členské funkce key_comp.Funkce objektu musí se chovají stejně jako objekt třídy hash_compare<klíče, méně<klíče >>. Konkrétně pro všechny hodnoty _Key typu klíče volání výšku (_Key ) poskytuje rozdělení hodnot typ size_t.

Obecně, tyto prvky musí být menší než srovnatelné pro toto pořadí, což znamená, že když jsou uvedeny dva prvky, může být stanoveno, zda jsou ekvivalentní (v tom smyslu, že ani jeden není menší než ten druhý), nebo že jeden je menší než druhý.Výsledkem řazení mezi prvky nerovnocenné.Technicky je funkce porovnání binárním predikátem, který indukuje přísné slabé řazení, standardním matematickým způsobem.Binárního predikátu f(x,y) je funkce objektu, který má dva objekty argumentu x a y a vrácená hodnota true nebo false.Objednání ukládané hash_set je přísné slabým objednávání Pokud binárního predikátu Nereflexivní antisymetrického a přenosné a je-li rovnocennost přenosné, kde dva objekty x a y jsou definovány jako rovnocenné po obou f(x,y) a f(y,x) jsou nepravdivé.Pokud silnější podmínka rovnosti mezi klíči nahradí ekvivalenci, stane se pořadí celkovým (v tom smyslu, že všechny prvky jsou uspořádány ve vztahu k sobě navzájem) a odpovídající klíče budou od sebe nerozeznatelné.

Skutečné pořadí prvků v řízené sekvenci závisí na hashovací funkci, funkci řazení a aktuální velikosti hashovací tabulky uložené v objektu kontejneru.Aktuální velikost hashovací tabulky nelze určit, takže obecně nelze předvídat pořadí prvků v řízené sekvenci.Vkládání prvků nezruší platnost žádných iterátorů a odstranění prvků zruší platnost pouze těch iterátorů, které výslovně odkazovaly na odstraněné prvky.

Obousměrný iterátor, ale členské funkce třídy je iterátor poskytovaném třídou hash_set Vložit a hash_set verze, které berou jako parametry šablony slabší vstupní iterátor, jehož funkce požadavky jsou minimální více než jsou zaručeny třídy iterátorů obousměrné.Různé koncepty iterátorů tvoří rodinu týkající se upřesnění jejich funkčnosti.Každý koncept iterátoru má vlastní sadu požadavků a algoritmy, které s nimi pracují, musí omezit jejich předpoklady na požadavky podle typu iterátoru.Lze předpokládat, že ke vstupnímu iterátoru lze přistoupit přes ukazatel pro odkazování na některý objekt a že může být zvýšen na další iterátor v pořadí.Toto je minimální sadu funkcí, ale je dostatečně srozumitelně komunikovat o rozsahu u iterátorů [_First, _Last) v rámci členské funkce třídy.

V aplikaci Visual C++ .NET 2003, členové hlavičkových souborů tříd <hash_map> a <hash_set> již nejsou v oboru názvů std, ale byly přesunuty do oboru názvů stdext.Další informace naleznete v tématu Obor názvů stdext.

Konstruktory

hash_set

Zkonstruuje objekt hash_set, který je prázdný nebo který je kopií celého nebo části některého jiného objektu hash_set.

Typedefs

allocator_type

Typ, který představuje třídu allocator pro objekt hash_set.

const_iterator

Typ, který poskytuje obousměrný iterátor, který může přečíst prvek const v objektu hash_set.

const_pointer

Typ, který poskytuje ukazatel na prvek const v objektu hash_set.

const_reference

Typ, který poskytuje odkaz na prvek const uložený v objektu hash_set pro čtení a provádění operací const.

const_reverse_iterator

Typ, který poskytuje obousměrný iterátor, který může přečíst jakýkoli prvek const v objektu hash_set.

difference_type

Celočíselný typ se znaménkem, který slouží k vyjádření počtu prvků objektu hash_set v rozsahu mezi prvky, na které odkazují iterátory.

iterátor

Typ, který poskytuje obousměrný iterátor, který může číst nebo upravovat libovolný prvek v objektu hash_set.

key_compare

Typ, který poskytuje objekt funkce, který může porovnat dva klíče řazení pro určení relativního pořadí dvou prvků v objektu hash_set.

key_type

Typ, který popisuje objekt uložen jako element hash_set coby klíč řazení.

ukazatel

Typ, který poskytuje ukazatel na prvek v objektu hash_set.

odkaz

Typ, který poskytuje odkaz na prvek uložený v objektu hash_set.

reverse_iterator

Typ, který poskytuje obousměrný iterátor, který může číst nebo upravovat prvek v obráceném objektu hash_set.

size_type

Celočíselný typ bez znaménka představující počet prvků v objektu hash_set.

value_compare

Typ, který obsahuje dva objekty funkce binárního predikátu porovnání tříd, které můžete porovnat dvě hodnoty elementu hash_set k určení jejich relativní pořadí a unární operátor predikátu, vytvoří hodnotu hash prvky.

value_type

Typ, který popisuje objekt uložen jako element hash_set coby hodnotu.

Členské funkce

begin

Vrátí iterace, který řeší první prvek hash_set.

hash_set::cbegin

Vrátí konstantní iterátor adresující první prvek v objektu hash_set.

hash_set::cend

Vrátí konstantní iterátor adresující umístění následující po posledním prvku v objektu hash_set..

vymazat

Vymaže všechny prvky objektu hash_set.

count

Vrátí počet prvků objektu hash_set, jejichž klíč odpovídá klíči se zadaným parametrem.

hash_set::crbegin

Vrátí konstantní iterátor adresující první prvek v obráceném objektu hash_set.

hash_set::crend

Vrátí konstantní iterátor adresující umístění následující po posledním prvku v obráceném objektu hash_set.

hash_set::emplace

Vloží vytvořený prvek na místo do objektu hash_set.

hash_set::emplace_hint

Vloží vytvořený prvek s náznakem umístění na místo do objektu hash_set.

prázdné

Testuje, zda je objekt hash_set prázdný.

end

Vrátí iterátor adresující umístění následující po posledním prvku v objektu hash_set.

equal_range

Vrátí pár iterátorů v uvedeném pořadí na první prvek v hash_set s klíčem, který je větší než zadaný klíč a první prvek hash_set s klíčem, který je roven nebo větší než klíč.

smazat

Odebere prvek nebo rozsahu prvků v hash_set od zadané pozice nebo odebere prvky, které odpovídají zadaným klíčem.

najít

Vrátí iterátor adresující umístění prvku v objektu hash_set, který má klíč odpovídající zadanému klíči.

get_allocator

Vrátí kopii objektu allocator, který slouží k vytvoření objektu hash_set.

insert

Vloží prvek nebo rozsah prvků do objektu hash_set.

key_comp

Získá kopii porovnání objekt použitý k objednávce klíčů v hash_set.

lower_bound

Iterovat vrátí první prvek hash_set s klíčem, který je roven nebo větší než zadaný klíč.

max_size

Vrátí maximální délku objektu hash_set.

rbegin

Vrátí iterátor adresující první prvek v obráceném objektu hash_set.

rend

Vrátí iterátor adresující umístění následující po posledním prvku v obráceném objektu hash_set.

velikost

Vrátí počet prvků v objektu hash_set.

zaměnit

Vymění prvky dvou objektů hash_set.

upper_bound

Iterovat vrátí první prvek hash_set , s klíčem, který je roven nebo větší než zadaný klíč.

value_comp

Získá kopii objekt vlastnosti algoritmu hash algoritmu hash a objednat hodnoty klíče v prvku hash_set.

Operátory

hash_set::operator=

Nahradí prvky objektu hash_set kopií jiného objektu hash_set.

Požadavky

Záhlaví:<hash_set>

Obor názvů: stdext

Viz také

Referenční dokumentace

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

Standardní knihovna šablon

Další zdroje

<hash_set> Členové

hash_set členů