hash_multiset (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_multiset 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í.Hodnota každého prvku slouží jako klíč pro řazení pořadí.
V popisu níže GValue je stejný jako GKey, který je stejný jako Key Pokud je typ odkazu, v takovém případě je Key^.
template<typename Key>
ref class hash_multiset
: public
System::ICloneable,
System::Collections::IEnumerable,
System::Collections::ICollection,
System::Collections::Generic::IEnumerable<GValue>,
System::Collections::Generic::ICollection<GValue>,
System::Collections::Generic::IList<GValue>,
Microsoft::VisualC::StlClr::IHash<Gkey, GValue>
{ ..... };
Parametry
- Klíč
Typ klíčovou součástí prvek v kontrolovaných sekvenci.
Členy
Definice typu |
Popis |
---|---|
Typ konstantního iterátoru řízené sekvence. |
|
Typ konstantního odkazu na prvek. |
|
Typ konstantní zpětného iterátor pro řízené sekvenci. |
|
Typ (pravděpodobně podepsaný) vzdálenost mezi dvěma prvky. |
|
Typ obecné rozhraní pro kontejner. |
|
Typ iterátor pro obecné rozhraní pro kontejner. |
|
Typ zpětného iterátor pro obecné rozhraní pro kontejner. |
|
Typ elementu pro obecné rozhraní pro kontejner. |
|
Hash delegáta pro klíč. |
|
Typ iterátoru řízené sekvence. |
|
Objednávání delegát pro dva klíče. |
|
Typ klíče řazení. |
|
Typ odkazu na prvek. |
|
Typ zpětného iterátor pro řízené sekvenci. |
|
Typ (kladné) vzdálenost mezi dvěma prvky. |
|
Objednávání delegát pro dvě hodnoty prvku. |
|
Typ prvku. |
Členská funkce |
Popis |
---|---|
Označí začátek řízené sekvenci. |
|
Vrátí počet bloků. |
|
Odebere všechny prvky. |
|
Počítá prvky odpovídající zadaným klíčem. |
|
Zkoušky zda jsou žádné prvky obsahují. |
|
Označí konci řízené sekvence. |
|
Zjistí rozsah, který odpovídá zadaným klíčem. |
|
Odebere prvky v určených polohách. |
|
Vyhledá prvek, který odpovídá zadaným klíčem. |
|
Zkopíruje hash delegáta pro klíč. |
|
Vytvoří objekt kontejneru. |
|
Přidá prvky. |
|
Zkopíruje objednávání delegát pro dva klíče. |
|
Spočítá průměrnou prvků za plechovka. |
|
Začátek zjistí rozsah, který odpovídá zadaným klíčem. |
|
Vytvoří objekt hodnoty. |
|
Získá nebo nastaví maximální prvků za plechovka. |
|
Označí začátek řízené obrácené pořadí. |
|
Znovu vytvoří tabulky hash. |
|
Označí konci obrácené řízené sekvence. |
|
Vrátí počet prvků. |
|
Zamění obsah dvou kontejnerů. |
|
Řízené sekvenci se zkopíruje do nového pole. |
|
Zjistí-li konec rozsahu, který odpovídá zadaným klíčem. |
|
Zkopíruje objednávání delegát pro dvě hodnoty prvku. |
Operátor |
Popis |
---|---|
Nahradí řízené sekvenci. |
Rozhraní
Rozhraní |
Popis |
---|---|
Duplicitní objekt. |
|
Úsek mezi prvky. |
|
Udržujte skupiny prvků. |
|
Úsek přes zadaný prvky. |
|
Udržujte skupiny typových prvků. |
|
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_set (STL/CLR), objekt třídy šablony hash_multiset nevyžaduje, že jsou jedinečné klíče pro všechny prvky. (Dvě nebo více kláves mohou mít 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 slouží jako klíč a hodnotu.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_multiset 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_multiset::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_multiset 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_multiset přímo uvedeny číselné pozice – která vyžaduje iterační náhodný přístup.
Hash_multiset iterátor uloží popisovač související hash_multiset 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_multiset iterátor zůstává v platnosti tak dlouho, dokud jeho přidružené hash_multiset uzel je přidružen k některé hash_multiset.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_set>
Obor názvů: cliext