hash_multiset – třída
[!POZNÁMKA]
Toto rozhraní API je zastaralé.Alternativou je unordered_multiset – třída.
Hash_multiset třída kontejneru je rozšíření knihovny standardních šablon a používá se pro skladování a rychlému načítání dat z kolekce, ve kterém hodnot obsažených prvků slouží jako klíčové hodnoty a nemusí být jedinečné.
template <
class Key,
class Traits=hash_compare<Key, less<Key> >,
class Allocator=allocator<Key>
>
class hash_multiset
Parametry
Klíč
Typ datových prvků v hash_multiset.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_multiset.Tento argument je nepovinný a výchozí hodnota je přidělování*<klíče>.*
Poznámky
Hash_multiset 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_multiset 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 hash pomocí řazení je větší účinnost: úspěšné zatřídění provede vkládání, odstraňování a vyhledá v konstantní Průměrná doba ve srovnání s dobou úměrné logaritmu počtu prvků v kontejneru pro třídění techniky.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).
Asociativní kontejneru dle výběru, pokud jsou podmínky jejich klíče Přiřazení hodnoty splňuje požadavky aplikací by měly být hash_multiset.Prvky hash_multiset může být více a sloužit jako vlastní klíče řazení tak klíče nejsou jedinečné.Model pro tento typ struktury je uspořádaný seznam, například slova, v nichž slova může vyskytnout více než jednou.Kdyby více výskytů slova povoleno, pak hash_set by byla struktura odpovídající kontejner.Pokud jedinečný definice byla připojena jako hodnoty pro seznam klíčových slov, jedinečný, hash_map by vhodné struktury obsahující tato data.Kdyby místo definice není jedinečný, hash_multimap bude kontejner volby.
Řada ovládá voláním objektu uložené hodnoty hash shodné vlastnosti typu objednávky hash_multiset 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 klíče typu klíč, volání znak(klíče) poskytuje rozdělení hodnot typu 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ý.To má za výsledek řazení mezi neekvivalentními prvky.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_multiset 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_multiset Vložit a hash_multiset 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ý iterátor pojem má svou vlastní hash_multiset požadavky a algoritmy, které pracují s nimi musí omezit jejich předpoklady k požadavkům podle typu iterator.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í hash_multiset 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
Zkonstruuje objekt hash_multiset, který je prázdný nebo který je kopií celého nebo části některého jiného objektu hash_multiset. |
Typedefs
Typ, který představuje třídu allocator pro objekt hash_multiset. |
|
Typ, který poskytuje obousměrný iterátor, který může přečíst prvek const v objektu hash_multiset. |
|
Typ, který poskytuje ukazatel na prvek const v objektu hash_multiset. |
|
Typ, který poskytuje odkaz na prvek const uložený v objektu hash_multiset pro čtení a provádění operací const. |
|
Typ, který poskytuje obousměrný iterátor, který může přečíst jakýkoli prvek const v objektu hash_multiset. |
|
Typ se znaménkem, který poskytuje rozdíl mezi dva iterátory, které prvky v rámci stejné adresy hash_multiset. |
|
Typ, který poskytuje obousměrný iterátor, který může číst nebo upravovat libovolný prvek v objektu hash_multiset. |
|
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_multiset. |
|
Typ, který popisuje objekt uložen jako element hash_set coby klíč řazení. |
|
Typ, který poskytuje ukazatel na prvek v objektu hash_multiset. |
|
Typ, který poskytuje odkaz na prvek uložený v objektu hash_multiset. |
|
Typ, který poskytuje obousměrný iterátor, který může číst nebo upravovat prvek v obráceném objektu hash_multiset. |
|
Celočíselný typ bez znaménka představující počet prvků v objektu hash_multiset. |
|
Typ, který obsahuje dva objekty funkce binárního predikátu porovnání tříd, které můžete porovnat dvě hodnoty elementu hash_multiset k určení jejich relativní pořadí a unární operátor predikátu, vytvoří hodnotu hash prvky. |
|
Typ, který popisuje objekt uložen jako element hash_multiset coby hodnotu. |
Členské funkce
Vrátí iterace, který řeší první prvek hash_multiset. |
|
Vrátí konstantní iterátor adresující první prvek v objektu hash_multiset. |
|
Vrátí konstantní iterátor adresující umístění následující po posledním prvku v objektu hash_multiset.. |
|
Vymaže všechny prvky objektu hash_multiset. |
|
Vrátí počet prvků hash_multiset jehož klíče odpovídá parametr zadán klíč |
|
Vrátí konstantní iterátor adresující první prvek v obráceném objektu hash_multiset. |
|
Vrátí konstantní iterátor adresující umístění následující po posledním prvku v obráceném objektu hash_multiset. |
|
Vloží vytvořený prvek na místo do objektu hash_multiset. |
|
Vloží vytvořený prvek s náznakem umístění na místo do objektu hash_multiset. |
|
Testuje, zda je objekt hash_multiset prázdný. |
|
Vrátí iterátor adresující umístění následující po posledním prvku v objektu hash_multiset. |
|
Vrátí pár iterátorů v uvedeném pořadí na první prvek v hash_multiset s klíčem, který je větší než zadaný klíč a první prvek hash_multiset s klíčem, který je roven nebo větší než klíč. |
|
Odebere prvek nebo rozsahu prvků v hash_multiset od zadané pozice nebo odebere prvky, které odpovídají zadaným klíčem. |
|
Vrátí iterátor adresující umístění prvku v objektu hash_multiset, který má klíč odpovídající zadanému klíči. |
|
Vrátí kopii objektu allocator, který slouží k vytvoření objektu hash_multiset. |
|
Vloží prvek nebo rozsah prvků do objektu hash_multiset. |
|
Získá kopii porovnání objekt použitý k objednávce klíčů v hash_multiset. |
|
Iterovat vrátí první prvek hash_multiset s klíčem, který je roven nebo větší než zadaný klíč. |
|
Vrátí maximální délku objektu hash_multiset. |
|
Vrátí iterátor adresující první prvek v obráceném objektu hash_multiset. |
|
Vrátí iterátor adresující umístění následující po posledním prvku v obráceném objektu hash_multiset. |
|
Vrátí počet prvků v objektu hash_multiset. |
|
Vymění prvky dvou objektů hash_multiset. |
|
Iterovat vrátí první prvek hash_multiset , s klíčem, který je roven nebo větší než zadaný klíč. |
|
Získá kopii objekt vlastnosti algoritmu hash algoritmu hash a objednat hodnoty klíče v prvku hash_multiset. |
Operátory
Nahradí prvky objektů hash_multiset kopií jiného objektu hash_multiset. |
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++