multiset – třída
Třídy multisady STL (Standard Template Library) slouží k ukládání a načítání dat z kolekce obsahující hodnoty prvků, které nemusí být jedinečné a ve které slouží jako klíčové hodnoty, podle kterých jsou data automaticky uspořádávána.Hodnotu klíče prvku v multisadě nelze změnit přímo.Místo toho musíte odstranit staré hodnoty a vložit prvky s novými hodnotami.
template <
class Key,
class Compare=less<Key>,
class Allocator=allocator<Key>
>
class multiset
Parametry
Klíč
Typ dat prvku, který bude uložen do multisady.Porovnat
Typ poskytující objekt funkce, který může porovnat dvě hodnoty prvků pro určení jejich relativního pořadí v multisadě.Binární predikát less<Key> je výchozí hodnota.Allocator
Typ představující uložený objekt alokátoru, který zapouzdřuje informace o přidělování a navrácení paměti zpět multisady.Výchozí hodnota je allocator*<Key>.*
Poznámky
Třída multisady STL 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.
Oboustranný, protože poskytuje obousměrné iterátory pro přístup k jeho prvkům.
Seřazený, protože jeho prvky jsou řazeny podle hodnot klíče v kontejneru podle zadané porovnávací funkce.
Vícenásobný v tom smyslu, že jeho prvky nemusí mít jedinečné klíče, takže jedna hodnota klíče může mít k sobě přidružených mnoho hodnot prvků.
Jednoduchý asociativní kontejner, protože jeho hodnoty prvku jsou jeho hodnoty klíče.
Třída šablony, protože poskytuje obecné funkce a to nezávisle na určitém typu dat obsažených jako prvky.Datový typ, který má být použit, je místo toho zadán jako parametr v šabloně třídy společně s funkcí porovnání a alokátorem.
Iterátor poskytovaný třídou multiset je obousměrný iterátor, ale členské funkce třídy insert a multiset mají verze, které jako parametry šablony berou slabší vstupní iterátor, jehož požadavky na funkce jsou minimálnější než ty, které jsou zaručeny třídou obousměrných iterátorů.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í sada funkcí, ale je dostatečná pro srozumitelnou komunikaci o rozsahu u iterátorů [First, Last) v rámci členských funkcí třídy.
Volba typu kontejneru by měla obecně vycházet z typu vyhledávání a vkládání vyžadovaného aplikací.Asociativní kontejnery jsou optimalizovány pro operace vyhledávání, vkládání a odstranění.Členské funkce, které explicitně podporují tyto operace, jsou efektivní a jsou prováděny v čase, který je průměrně úměrný logaritmu počtu prvků v kontejneru.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.
Objekt multisady (multiset) by měl být asociativní kontejner dle výběru, kdy jsou podmínky přiřazení hodnot k jejich klíčům splněny aplikací.Prvků multisady může být více a slouží jako vlastní klíče řazení, takže klíče nejsou jedinečné.Model pro tento typ struktury je uspořádaný seznam slov, v němž se slova mohou vyskytovat více než jednou.Pokud by nebylo povoleno více výskytů jednoho slova, byl by objekt set odpovídající strukturou kontejneru.Pokud byly k seznamu jedinečných klíčových slov připojeny jedinečné definice jako hodnoty, objekt map by byl vhodnou strukturou, který by měla tato data obsahovat.Pokud by však definice nebyly jedinečné, byl by zvoleným kontejnerem multimap.
Třída multiset seřadí sekvence pomocí volání uloženého objektu funkce typu Compare.Tento uložený objekt je funkce porovnání, ke které lze získat přístup pomocí členské funkce key_comp.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í predikát f(x,y) je objekt funkce, který má dva objekty argumentu x a y a návratovou hodnotu true nebo false.Seřazení určené na objektu set je přísné slabé seřazení, pokud je binární predikát nereflexivní, antisymetrický a tranzitivní a je-li ekvivalence tranzitivní, kde jsou dva objekty x a y definovány jako ekvivalentní, když mají predikáty f(x,y) i f(y,x) hodnotu false.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é.
Konstruktory
Zkonstruuje objekt multiset, který je prázdný nebo který je kopií celého nebo části zadaného objektu multiset. |
Typedefs
Definice typu třídy allocator pro objekt multiset. |
|
Definice typu pro obousměrný iterátor, který může číst prvky const v objektu multiset. |
|
Definice typu ukazatele na prvek const v objektu multiset. |
|
Definice typu odkazu na prvek const uložený v objektu multiset pro čtení a provádění operace const. |
|
Definice typu pro obousměrný iterátor, který může číst jakýkoli prvek const v objektu multiset. |
|
Definice typu celého čísla se znaménkem pro počet prvků objektu multiset v rozsahu mezi prvky, na které odkazují iterátory. |
|
Definice typu obousměrného iterátoru, který může číst nebo upravovat libovolný prvek v objektu multiset. |
|
Definice typu poskytující objekt funkce, který může porovnat dva klíče pro určení relativního pořadí dvou prvků v objektu multiset. |
|
Definice typu poskytující objekt funkce, který může porovnat dva klíče řazení pro určení relativního pořadí dvou prvků v objektu multiset. |
|
Definice typu ukazatele na prvek v objektu multiset. |
|
Definice typu odkazu na prvek uložený v objektu multiset. |
|
Definice typu obousměrného iterátoru, který může číst nebo upravovat prvek v obráceném objektu multiset. |
|
Celočíselný typ bez znaménka představující počet prvků v objektu multiset. |
|
Definice typu poskytující objekt funkce, který může porovnat dva prvky jako klíče řazení pro určení jejich relativního pořadí v objektu multiset. |
|
Definice typu popisuje objekt uložený jako prvek sady jako multiset v jeho kapacitě jako hodnotu. |
Členské funkce
Vrátí iterátor odkazující na první prvek v objektu multiset. |
|
Vrátí iterátor const adresující první prvek v objektu multiset. |
|
Vrátí konstantní iterátor adresující umístění následující po posledním prvku v objektu multiset. |
|
Vymaže všechny prvky objektu multiset. |
|
Vrátí počet prvků objektu multiset, jejichž klíč odpovídá klíči zadanému jako parametr. |
|
Vrátí konstantní iterátor adresující první prvek v obráceném objektu set. |
|
Vrátí konstantní iterátor adresující umístění následující po posledním prvku v obráceném objektu set. |
|
Vloží vytvořený prvek na místo do objektu multiset. |
|
Vloží vytvořený prvek s náznakem umístění na místo do objektu multiset. |
|
Testuje, zda je objekt multiset prázdný. |
|
Vrátí iterátor, který odkazuje na umístění za posledním prvkem v objektu multiset. |
|
Vrátí pár iterátorů.První iterátor v páru odkazuje na první prvek objektu multiset s klíčem, který je větší než zadaný klíč.Druhý iterátor v páru odkazuje na první prvek v objektu multiset s klíčem, který je roven nebo větší než tento klíč. |
|
Odebere prvek nebo rozsah prvků v objektu multiset od zadané pozice nebo odebere prvky, které odpovídají zadanému klíči. |
|
Vrátí iterátor odkazující na první umístění prvku v objektu multiset, který má klíč stejný jako zadaný klíč. |
|
Vrátí kopii objektu allocator, který je použit pro vytvoření objektu multiset. |
|
Vloží prvek nebo rozsah prvků do objektu multiset. |
|
Poskytuje objekt funkce, který může porovnat dva klíče řazení pro určení relativního pořadí dvou prvků v objektu multiset. |
|
Vrátí iterátor na první prvek objektu multiset s klíčem, který je roven nebo větší než zadaný klíč. |
|
Vrátí maximální délku objektu multiset. |
|
Vrátí iterátor odkazující na první prvek v obráceném objektu multiset. |
|
Vrátí iterátor, který odkazuje na umístění následující po posledním prvku v obrácením objektu multiset. |
|
Vrátí počet prvků v objektu multiset. |
|
Vymění prvky dvou objektů multiset. |
|
Vrátí iterátor na první prvek objektu multiset s klíčem, který je větší než zadaný klíč. |
|
Získá kopii objektu porovnání použitého pro seřazení hodnot prvků objektu multiset. |
Operátory
Nahradí prvky objektu multiset kopií jiného objektu multiset. |
Požadavky
Hlavička: <set>
Obor názvů: std
Viz také
Referenční dokumentace
Bezpečný přístup z více vláken ve standardní knihovně C++