Sdílet prostřednictvím


multimap – třída

Třída multimap STL (Standard Template Library) slouží k ukládání a načítání dat z kolekce, ve které je každý prvek pár, který má datovou hodnotu a klíč řazení.Hodnota klíče nemusí být jedinečná a je použita k automatickému seřazení dat.Hodnotu prvku v objektu multimap, ale ne jeho přidruženou hodnotu klíče, lze změnit přímo.Namísto toho hodnoty klíčů přidružené ke starým prvkům musí být odstraněny a vloženy nové hodnoty klíče související s novými prvky.

template <
   class Key, 
   class Type, 
   class Traits=less<Key>, 
   class Allocator=allocator<pair <const Key, Type> > 
> class multimap;

Parametry

  • Key
    Datový typ klíče, který se uloží v objektu multimap.

  • Type
    Typ dat prvku, který bude uložen do objektu multimap.

  • Traits
    Typ poskytující objekt funkce, který může porovnat dvě hodnoty prvků pro určení jejich relativního pořadí v objektu multimap.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 objektu map.Tento argument je nepovinný a výchozí hodnota je allocator<pair <const Key, Type> >.

Poznámky

Třída multimap 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ý, protože je 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 datových hodnot prvků.

  • Kontejner asociativních párů, protože jeho prvky hodnoty dat se liší od hodnot klíčů.

  • Třída šablony, protože poskytuje obecné funkce a to nezávisle na určitém typu dat obsažených jako prvky 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.

Iterátor poskytovaný třídou map je obousměrný iterátor, ale členské funkce třídy insert a multimap 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 multimap 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í.Model pro tento typ struktury je uspořádaný seznam klíčových slov s přidruženými řetězcovými hodnotami poskytujícími (řekněme) definice, kde slova nebyla vždy jednoznačně definována.Pokud místo toho klíčová slova byla jedinečně definovaná tak, aby byly klíče jedinečné, bude objekt map správným kontejnerem výběru.Naopak pokud je pouze uložen seznam slov, bude objekt set tím správným kontejnerem.Pokud bylo povoleno více výskytů jednoho slova, je objekt multiset odpovídající strukturou kontejneru.

Třída multimap seřadí sekvence pomocí volání uloženého objektu funkce typu key_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) a 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é.

Členy

Konstruktory

multimap

Zkonstruuje objekt multimap, který je prázdný nebo který je kopií celého nebo části některého jiného objektu multimap.

Typedefs

allocator_type

Typ, který představuje třídu allocator pro objekt multimap.

const_iterator

Typ, který poskytuje obousměrný iterátor, který může přečíst prvek const v objektu multimap.

const_pointer

Typ, který poskytuje ukazatel na prvek const v objektu multimap.

const_reference

Typ, který poskytuje odkaz na prvek const uložený v objektu multimap pro čtení a provádění operací const.

const_reverse_iterator

Typ, který poskytuje obousměrný iterátor, který může přečíst jakákoli prvek const v objektu multimap.

difference_type

Celočíselný typ se znaménkem, který slouží k vyjádření počtu prvků objektu multimap v rozsahu mezi prvky, na které odkazují iterátory.

iterátor

Typ, který obsahuje rozdíl mezi dvěma iterátory, které odkazují na prvky v rámci stejného objektu multimap.

key_compare

Typ, který poskytuje objekt funkce, který může porovnat dva klíče řazení pro určení relativního pořadí dvou prvků v objektu multimap.

key_type

Typ, který popisuje řazení objektu klíče, který představuje každý prvek objektu multimap.

mapped_type

Typ, který představuje datový typ uložený v objektu multimap.

ukazatel

Typ, který poskytuje ukazatel na prvek const v objektu multimap.

reference

Typ, který poskytuje odkaz na prvek uložený v objektu multimap.

reverse_iterator

Typ, který poskytuje obousměrný iterátor, který může číst nebo upravovat prvek v obráceném objektu multimap.

size_type

Celočíselný typ bez znaménka poskytující ukazatel na prvek const v objektu multimap.

value_type

Typ, který poskytuje objekt funkce, který může porovnat dva prvky pro určení jejich relativního pořadí v objektu multimap.

Členské funkce

begin

Vrátí iterátor adresující první prvek v objektu multimap.

cbegin

Vrátí konstantní iterátor adresující první prvek v objektu multimap.

cend

Vrátí konstantní iterátor adresující umístění následující po posledním prvku v objektu multimap.

vymazat

Vymaže všechny prvky objektu multimap.

count

Vrátí počet prvků objektu multimap, jejichž klíč odpovídá klíči se zadaným parametrem.

crbegin

Vrátí konstantní iterátor adresující první prvek v obráceném objektu multimap.

crend

Vrátí konstantní iterátor adresující umístění následující po posledním prvku v obráceném objektu multimap.

emplace

Vloží vytvořený prvek na místo do objektu multimap.

emplace_hint

Vloží vytvořený prvek s náznakem umístění na místo do objektu multimap.

empty

Testuje, zda je objekt multimap prázdný.

end

Vrátí iterátor adresující umístění následující po posledním prvku v objektu multimap.

equal_range

Vyhledá rozsahu prvků, kde klíče prvku odpovídají zadané hodnotě.

smazat

Odebere prvek nebo rozsah prvků v objektu multimap od zadané pozice nebo odebere prvky, které odpovídají zadanému klíči.

find

Vrátí iterátor adresující první umístění prvku v objektu multimap, který má klíč odpovídající zadanému klíči.

get_allocator

Vrátí kopii objektu allocator, který slouží k vytvoření objektu multimap.

insert

Vloží prvek nebo rozsah prvků do objektu multimap.

key_comp

Načte kopii objektu porovnání, která je použita pro seřazení klíčů v objektu multimap.

lower_bound

Vrátí iterátor na první prvek objektu multimap s klíčem, který je roven nebo větší než zadaný klíč.

max_size

Vrátí maximální délku objektu multimap.

rbegin

Vrátí iterátor adresující první prvek v obráceném objektu multimap.

rend

Vrátí iterátor adresující umístění následující po posledním prvku v obráceném objektu multimap.

velikost

Vrátí počet prvků v objektu multimap.

swap

Vymění prvky dvou objektů multimap.

upper_bound

Vrátí iterátor na první prvek objektu multimap s klíčem, který je větší než zadaný klíč.

value_comp

Členská funkce vrátí objekt funkce, který určuje pořadí prvků v objektu multimap porovnáním jejich hodnoty klíče.

Operátory

operator=

Nahradí prvky objektu multimap kopií jiného objektu multimap.

Požadavky

Hlavička: <map>

Obor názvů: std

Páry (klíč, hodnota) jsou uloženy v objektech multimap jako objekty typu pair.Třída pair vyžaduje <nástroj> hlavičky, který je automaticky zahrnut objektem <map>.

Viz také

Referenční dokumentace

Bezpečný přístup z více vláken ve standardní knihovně C++

Standardní knihovna šablon

Koncepty

Kontejnery

Další zdroje

<map> Členové