Sdílet prostřednictvím


hash_map (STL/CLR)

Třída šablony popisuje objekt, který ovládá různé délky posloupnost prvků, která má obousměrný přístup.Použití kontejneru hash_map spravovat řadu prvků jako tabulky hash, každá položka tabulky ukládání obousměrný propojený seznam uzlů a každý uzel jeden prvek ukládání.Element obsahuje klíč pro řazení pořadí a mapované hodnoty, která žádají o jedou.

V popisu níže GValue je stejný jako:

Microsoft::VisualC::StlClr::GenericPair<GKey, GMapped>

kde:

GKeyje stejný jako Key Pokud je typ odkazu, v takovém případě jeKey^

GMappedje stejný jako Mapped Pokud je typ odkazu, v takovém případě jeMapped^

template<typename Key,
    typename Mapped>
    ref class hash_map
        :   public
        System::ICloneable,
        System::Collections::IEnumerable,
        System::Collections::ICollection,
        System::Collections::Generic::IEnumerable<GValue>,
        System::Collections::Generic::ICollection<GValue>,
        System::Collections::Generic::IList<GValue>,
        System::Collections::Generic::IDictionary<Gkey, GMapped>,
        Microsoft::VisualC::StlClr::IHash<Gkey, GValue>
    { ..... };

Parametry

  • Klíč
    Typ klíčovou součástí prvek v kontrolovaných sekvenci.

  • Mapovat
    Typ další součást prvek v kontrolovaných sekvenci.

Členy

Definice typu

Popis

hash_map::const_iterator (STL/CLR)

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

hash_map::const_reference (STL/CLR)

Typ konstantního odkazu na prvek.

hash_map::const_reverse_iterator (STL/CLR)

Typ konstantní zpětného iterátor pro řízené sekvenci.

hash_map::difference_type (STL/CLR)

Typ (pravděpodobně podepsaný) vzdálenost mezi dvěma prvky.

hash_map::generic_container (STL/CLR)

Typ obecné rozhraní pro kontejner.

hash_map::generic_iterator (STL/CLR)

Typ iterátor pro obecné rozhraní pro kontejner.

hash_map::generic_reverse_iterator (STL/CLR)

Typ zpětného iterátor pro obecné rozhraní pro kontejner.

hash_map::generic_value (STL/CLR)

Typ elementu pro obecné rozhraní pro kontejner.

hash_map::hasher (STL/CLR)

Hash delegáta pro klíč.

hash_map::iterator (STL/CLR)

Typ iterátoru řízené sekvence.

hash_map::key_compare (STL/CLR)

Objednávání delegát pro dva klíče.

hash_map::key_type (STL/CLR)

Typ klíče řazení.

hash_map::mapped_type (STL/CLR)

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

hash_map::reference (STL/CLR)

Typ odkazu na prvek.

hash_map::reverse_iterator (STL/CLR)

Typ zpětného iterátor pro řízené sekvenci.

hash_map::size_type (STL/CLR)

Typ (kladné) vzdálenost mezi dvěma prvky.

hash_map::value_compare (STL/CLR)

Objednávání delegát pro dvě hodnoty prvku.

hash_map::value_type (STL/CLR)

Typ prvku.

Členská funkce

Popis

hash_map::begin (STL/CLR)

Označí začátek řízené sekvenci.

hash_map::bucket_count (STL/CLR)

Vrátí počet bloků.

hash_map::clear (STL/CLR)

Odebere všechny prvky.

hash_map::count (STL/CLR)

Počítá prvky odpovídající zadaným klíčem.

hash_map::empty (STL/CLR)

Zkoušky zda jsou žádné prvky obsahují.

hash_map::end (STL/CLR)

Označí konci řízené sekvence.

hash_map::equal_range (STL/CLR)

Zjistí rozsah, který odpovídá zadaným klíčem.

hash_map::erase (STL/CLR)

Odebere prvky v určených polohách.

hash_map::find (STL/CLR)

Vyhledá prvek, který odpovídá zadaným klíčem.

hash_map::hash_delegate (STL/CLR)

Zkopíruje hash delegáta pro klíč.

hash_map::hash_map (STL/CLR)

Vytvoří objekt kontejneru.

hash_map::insert (STL/CLR)

Přidá prvky.

hash_map::key_comp (STL/CLR)

Zkopíruje objednávání delegát pro dva klíče.

hash_map::load_factor (STL/CLR)

Spočítá průměrnou prvků za plechovka.

hash_map::lower_bound (STL/CLR)

Začátek zjistí rozsah, který odpovídá zadaným klíčem.

hash_map::make_value (STL/CLR)

Vytvoří objekt hodnoty.

hash_map::max_load_factor (STL/CLR)

Získá nebo nastaví maximální prvků za plechovka.

hash_map::rbegin (STL/CLR)

Označí začátek řízené obrácené pořadí.

hash_map::rehash (STL/CLR)

Znovu vytvoří tabulky hash.

hash_map::rend (STL/CLR)

Označí konci obrácené řízené sekvence.

hash_map::size (STL/CLR)

Vrátí počet prvků.

hash_map::swap (STL/CLR)

Zamění obsah dvou kontejnerů.

hash_map::to_array (STL/CLR)

Řízené sekvenci se zkopíruje do nového pole.

hash_map::upper_bound (STL/CLR)

Zjistí-li konec rozsahu, který odpovídá zadaným klíčem.

hash_map::value_comp (STL/CLR)

Zkopíruje objednávání delegát pro dvě hodnoty prvku.

Operátor

Popis

hash_map::operator= (STL/CLR)

Nahradí řízené sekvenci.

hash_map::operator[] (STL/CLR)

Mapuje jeho přidružené namapovaná hodnota klíče.

Rozhraní

Rozhraní

Popis

ICloneable

Duplicitní objekt.

IEnumerable

Úsek mezi prvky.

ICollection

Udržujte skupiny prvků.

IEnumerable

Úsek přes zadaný prvky.

ICollection

Udržujte skupiny typových prvků.

IDictionary

Udržovat skupinu {klíč hodnota} páry.

IHash<klíč, hodnota>

Udržujte obecný kontejner.

Poznámky

Objekt přiděluje a uvolňuje úložiště pro sekvence, které ovládá jako jednotlivé uzly v propojeném seznamu obousměrné.Objekt k urychlení přístupu, také různé délky pole ukazatelů do seznamu (Tabulka hash), efektivní správě celý seznam jako posloupnost podseznamy, udržuje nebo intervalů.Vloží prvky na bloku, který udržuje uspořádaný změnou propojení mezi uzly nikdy zkopírováním obsahu z jednoho uzlu do druhého.To znamená, že můžete vložit a odebrat prvky volně bez narušení zbývající prvky.

Objekt řadí každý blok ovládá pomocí volání uložené delegát objekt typu hash_set::key_compare (STL/CLR).Uložené delegát objekt můžete určit při vytváření hash_set; -li zadán žádný objekt delegáta, výchozí hodnota je porovnání operator<=(key_type, key_type).

Přístup k objektu uložených delegátem voláním členské funkce hash_set::key_comp (STL/CLR)().Takový objekt delegáta musí definovat odpovídající řazení mezi klíče typu hash_set::key_type (STL/CLR).To znamená pro libovolné dva klíče X a Y:

key_comp()(X, Y)Vrátí výsledek stejné logická hodnota při každém volání.

Pokud key_comp()(X, Y) && key_comp()(Y, X) je true, pak X a Y jsou tvrdil, že mají odpovídající řazení.

Jakékoli řazení pravidlo, které se chová jako operator<=(key_type, key_type), operator>=(key_type, key_type) nebo operator==(key_type, key_type) definuje pořadí eqivalent.

Všimněte si, že prvky jejichž klíče mají ekvivalentní řazení (a které hash stejnou hodnotu celé číslo) jsou vedle sebe v sadě zajišťuje kontejneru pouze.Na rozdíl od šablony třídy hash_multimap (STL/CLR), objekt třídy šablony hash_map zajišťuje, aby byly jedinečné klíče pro všechny prvky. (Žádné dva klíče jsou ekvivalentní řazení.)

Objekt určuje blok, který by měl obsahovat daný klíč řazení voláním uložených delegát objekt typu hash_set::hasher (STL/CLR).Přístup k této uložené objekt voláním členské funkce hash_set::hash_delegate (STL/CLR)() získat celočíselnou hodnotu, která závisí na hodnotu klíče.Uložené delegát objekt můžete určit při vytváření hash_set; -li zadán žádný objekt delegáta, ve výchozím nastavení je funkce System::Object::hash_value(key_type).To znamená pro všechny klíče X a Y:

hash_delegate()(X)Při každém volání vrátí stejný výsledek celé číslo.

Pokud X a Y mít ekvivalentní řazení, pak hash_delegate()(X) by mělo vrátit stejný výsledek jako číslo hash_delegate()(Y).

Každý prvek obsahuje samostatný klíč a hodnotu mapované.Pořadí je reprezentován způsobem, který umožňuje vyhledávání, vložení a odebrání libovolného prvku s počet operací, které je nezávislé na počtu prvků v posloupnosti (konstantní doba) - alespoň v nejlepším případě.Kromě toho vložení prvku přestanou platit žádné iterátory a odebrání prvku zruší platnost pouze iterátory, které odkazují na odebraný prvek.

Pokud se hash hodnoty nejsou rovnoměrně, však může degenerate tabulky hash.Extreme – funkce hash, která vždy vrátí stejnou hodnotu – vyhledávání, vkládání a odstranění jsou úměrné počtu prvků v posloupnosti (lineární čas).Kontejner endeavors, chcete-li zvolit funkci hash přiměřené, střední plechovka velikost a velikost tabulky hash (celkový počet bloků), ale lze přepsat některé nebo všechny tyto volby.Viz například funkce hash_set::max_load_factor (STL/CLR) a hash_set::rehash (STL/CLR).

Hash_map podporuje obousměrné iterátory, což znamená, že jste se přesunuli do sousedící prvky uvedené iterace, který určuje prvek v kontrolovaných sekvenci.Speciální hlavního uzlu odpovídá iterátor vrácené hash_map::end (STL/CLR)().Tento iterační dosáhnout poslední prvek v kontrolovaných sekvenci, lze snížit, pokud je k dispozici.Můžete zvýšit hash_map iterátor pro dosažení hlavního uzlu a bude pak porovnat rovná end().Ale nelze přistoupit přes ukazatel vrácené iterace end().

Všimněte si, že nemůže odkazovat na prvek hash_map přímo uvedeny číselné pozice – která vyžaduje iterační náhodný přístup.

Hash_map iterátor uloží popisovač související hash_map uzlu, který zase obsahuje úchyt na jeho přidružené kontejnerové.U iterátorů lze použít pouze jejich přidružené kontejnerové objekty.Hash_map iterátor zůstává v platnosti tak dlouho, dokud jeho přidružené hash_map uzel je přidružen k některé hash_map.Navíc platný iterátor je dereferencable – slouží k přístupu nebo změnit hodnotu prvku jmenuje--tak dlouho, dokud není rovno end().

Mazání nebo odebrání prvku volání destruktoru jeho uložené hodnoty.Zničení kontejneru vymaže všechny prvky.Kontejner, jehož typ prvku ref class tedy zajišťuje, že žádné prvky outlive kontejneru.Uvědomte si však, že kontejner úchyty se not zničit jeho prvků.

Požadavky

Záhlaví:<cliext/hash_map>

Obor názvů: cliext

Viz také

Referenční dokumentace

hash_map (STL/CLR)

hash_multiset (STL/CLR)

hash_set (STL/CLR)

map (STL/CLR)

multimap (STL/CLR)

multiset (STL/CLR)

set (STL/CLR)

Další zdroje

STL/CLR – Referenční dokumentace knihoven