hash_multiset Class
[!POZNÁMKA]
Toto rozhraní API je zastaralé.Alternativou je unordered_multiset Class.
Hash_multiset třída kontejneru je rozšíření knihovny standardních šablon a slouží pro ukládání a rychlé načítání dat z kolekce sloužit jako hodnoty klíče hodnoty obsažených prvků 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 dat prvku uloženy v hash_multiset.Traits
Typ, který zahrnuje dva objekty funkce Porovnat jednu třídu je binárního predikátu moci porovnat dvě hodnoty elementu jako klíče řazení určit jejich relativní pořadí a funkce hash, která je unární predikát 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ě*<Key> >* Výchozí hodnota je.Allocator
Typ, který představuje uloženou přidělování objekt, který zapouzdřuje 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í*<Key>.*
Poznámky
Hash_multiset je:
Asociativní kontejneru, které proměnné velikosti kontejneru, který podporuje efektivní načtení hodnoty elementu podle přidružené klíče hodnoty.Dále je jednoduché asociativní kontejner, protože jeho hodnoty elementu jeho hodnoty klíče.
Vrátit zpět, protože poskytuje obousměrný iterátor přístup k jeho prvky.
Hešováno, protože jeho prvky jsou seskupeny do bloků na základě hodnoty hash funkce použity hodnoty klíče prvků.
V tom smyslu, že každý z jeho prvků musí mít jedinečný klíč je jedinečný.Protože hash_multiset je také jednoduché asociativní kontejneru, jeho prvky jsou také jedinečné.
Třída šablony protože poskytuje funkce je obecný a tak nezávislé na konkrétní typ dat obsažených prvků nebo klíče.Datové typy pro klíče a prvky jsou, místo toho zadány jako parametry v šabloně třídy a funkce porovnání a přidělování.
Hlavní výhodou hash přes řazení je větší účinnost: úspěšné hash provádí vkládání, odstraňování a vyhledá v konstantní Průměrná doba srovnání času úměrné logaritmu počtu prvků v kontejneru pro třídění technik.Hodnotu elementu v sadě nemusí přímo změnit.Místo toho musíte odstranit staré hodnoty a vložení prvků novými hodnotami.
Volba typu kontejner by obecně založené na typu hledání a vložením požadovaného aplikací.Hash asociativní kontejnery jsou optimalizovány pro operace vyhledávání, vkládání a odstraňování.Členské funkce, které explicitně podporují tyto operace jsou účinné při použití funkce hash dobře, jejich provedení v čase, který je v průměru konstantní a není závislá na počtu prvků v kontejneru.Funkce hash dobře vytváří rovnoměrné rozdělení hodnot hash hodnoty a minimalizuje počet kolizím, kde se říká srážky při odlišné hodnoty klíče jsou mapovány na stejnou hodnotu hash.V nejhorším případě nejhorší možné hash funkce počet operací je úměrná počtu prvků v pořadí (lineární čas).
Asociativní kontejneru voleb jsou podmínky jejich klíče Přiřazení hodnoty splňuje 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, slova říci, ve kterých slova může vyskytnout více než jednou.Kdyby více výskytů slova povoleno, klepněte hash_set by byly struktury odpovídající kontejner.Pokud jedinečný definice byly připojeny, jako hodnoty seznam klíčových slov, jedinečný, hash_map by vhodné struktury obsahovat tato data.Pokud místo definice není jedinečný, by hash_multimap kontejneru voleb.
Pořadí řídí voláním vlastnosti uložené hash objekt typu objednávky hash_multiset value_compare.Tento objekt uložené mohou 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ě*<Key> >.* Konkrétně pro všechny hodnoty klíče typu klíče, volání znak(klíče) dává rozdělení hodnot typu size_t.
Obecně třeba zavést tuto objednávku pouze menší než srovnatelné prvky: aby dána dvěma prvky, jej může být stanoven jsou rovnocenné (v tom smyslu, že ani menší než jiný) nebo že jeden je menší než ostatní.Výsledkem řazení mezi nonequivalent prvky.Na další technické poznámky je funkce porovnání binárního predikátu, která indukuje přísné slabé řazení do standardní matematické smysl.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.Řazení uložených hash_multiset je přísné slabým objednání Pokud binárního predikátu nereflexivní antisymetrického a přenositelné a pokud rovnocennosti přenosné, kde dva objekty x a y jsou definovány jako rovnocenné, kdy obě f(x,y) a f(y,x) jsou nepravdivé.Pokud silnější podmínku rovnosti mezi klíči nahradí, rovnocennosti, řazení se stane celkem (v tom smyslu, že jsou všechny prvky uspořádány k sobě) a odpovídající klíče budou od sebe indiscernible.
Skutečné pořadí prvků v řízené sekvenci závisí na funkci hash funkce řazení a aktuální velikost tabulky hash uložené v objektu kontejneru.Aktuální velikost tabulky hash nelze určit tak pořadí prvků v řízené sekvenci nelze předpovědět obecně.Vkládání prvků přestanou platit žádné iterátorů a odebrání prvků zruší platnost pouze iterátory, které bylo výslovně nepočítá prvky odstraněny.
Obousměrný iterátor, ale členské funkce třídy je iterátor poskytuje třídy hash_multiset Vložit a hash_multiset verzemi vzít jako parametry šablony slabší vstupní iterátor, jehož funkce požadavky jsou minimální více než zaručené třídou obousměrných iterátorů.Formulář iterátor odlišné koncepty vztahují zpřesnění jejich funkčnosti rodiny.Každý iterátor pojem má svou vlastní hash_multiset požadavky a algoritmy, které s nimi pracovat, musí omezit jejich předpoklady podle typu iterator požadavky.Může předpokládat, že může přímo odkázat vstupní iterátor odkázat na některý objekt a může být zvýšena na iterátor další v pořadí.Toto je minimální hash_multiset funkce, ale je dost moci hovořit o rozsahu iterátorů srozumitelně [_First, _Last) v rámci členské funkce třídy.
V aplikaci Visual C++ .NET 2003, členové <hash_map> a <hash_set> jsou již v oboru názvů std soubory hlaviček, ale spíše být přesunut do oboru názvů stdext.Viz stdext obor názvů Další informace.
Konstruktory
Konstrukce hash_multiset je prázdné nebo je kopírovat všechny nebo některé další část hash_multiset. |
Funkce TypeDef
Typ, který představuje allocator pro třídu hash_multiset objektu. |
|
Typ, který poskytuje obousměrný iterátor, která mohou číst const prvek hash_multiset. |
|
Typ, který obsahuje ukazatel const element v hash_multiset. |
|
Typ, který poskytuje odkaz na const element uložené v hash_multiset pro čtení a provádění const operace. |
|
Typ, který poskytuje obousměrný iterátor, která mohou číst všechny const prvek hash_multiset. |
|
Typ signed integer, který poskytuje rozdíl mezi dvěma iterátory, které prvky v rámci stejné adresy hash_multiset. |
|
Typ, který poskytuje obousměrný iterátor, který lze číst nebo upravovat libovolný prvek v hash_multiset. |
|
Typ, který poskytuje funkce objektu, který lze porovnat dva klíče řazení určit relativní pořadí dvou prvků hash_multiset. |
|
Typ, který popisuje objekt uložen jako prvek hash_set v postavení klíč řazení. |
|
Typ, který obsahuje ukazatel na prvek hash_multiset. |
|
Typ, který poskytuje odkaz na element v uložených hash_multiset. |
|
Typ, který poskytuje obousměrný iterátor, který lze číst nebo upravovat prvek Stornovaná hash_multiset. |
|
Typ unsigned integer představující počet prvků v hash_multiset. |
|
Typ, který poskytuje dvě funkce objektů binárního predikátu porovnat třídy, 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 prvek hash_multiset jako hodnotu. |
Členské funkce
Vrátí iterátor, který řeší první prvek hash_multiset. |
|
Vrátí const iterátor adresování první prvek hash_multiset. |
|
Vrátí const iterátor, který řeší umístění následných posledního prvku hash_multiset. |
|
Vymaže všechny prvky hash_multiset. |
|
Vrátí počet prvků hash_multiset jehož klíč odpovídá parametr zadán klíč |
|
Vrátí const iterátor adresování první prvek Stornovaná hash_multiset. |
|
Vrátí const iterátor, který řeší umístění následných poslední prvek v reverzní hash_multiset. |
|
Vloží prvek konstruovány do místa hash_multiset. |
|
Vloží prvek vyrobeno na místě do hash_multiset, s umístění nápovědy. |
|
Pokud testy hash_multiset je prázdný. |
|
Vrátí iterátor, který řeší umístění následných posledního prvku hash_multiset. |
|
Vrátí pár iterátorů respektive první prvek 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í iterace adresování umístění prvku v hash_multiset , který má zadaný klíč odpovídající klíč. |
|
Vrátí kopii allocator používá k vytvoření objektu hash_multiset. |
|
Vloží element nebo elementy do oblasti hash_multiset. |
|
Získá kopii objektu porovnání, používá pořadí klíče hash_multiset. |
|
Vrátí iterace první prvek hash_multiset s klíčem, který je roven nebo větší než zadaný klíč. |
|
Vrátí maximální délku hash_multiset. |
|
Vrátí iterace adresování první prvek Stornovaná hash_multiset. |
|
Vrátí iterátor, který řeší umístění následných poslední prvek v reverzní hash_multiset. |
|
Vrátí počet prvků hash_multiset. |
|
Výměny prvky dvou hash_multisets. |
|
Vrátí iterace první prvek hash_multiset , s klíčem, který je roven nebo větší než zadaný klíč. |
|
Získá kopii objektu znaky hash algoritmu hash a pořadí hodnoty klíče v prvku hash_multiset. |
Operátory
Nahradí prvky hash_multiset s kopií jiného hash_multiset. |
Požadavky
Záhlaví: <hash_set>
Obor názvů: stdext
Viz také
Referenční dokumentace
Bezpečnostní vlákno v Standardní knihovna C++