map – třída
Používá se pro 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 je jedinečná a je použita k automatickému seřazení dat.
Hodnotu prvku v objektu map lze změnit přímo.Hodnota klíče je konstantní a nelze ji změnit.Namísto toho hodnoty klíčů přidružené ke starým prvkům musí být odstraněny a nové hodnoty klíče musí být vloženy pro nové prvky.
template <
class Key,
class Type,
class Traits = less<Key>,
class Allocator=allocator<pair <const Key, Type> >
> class map;
Parametry
Key
Datový typ klíče, který se uloží v objektu map.Type
Typ dat prvku, který bude uložen v objektu map.Traits
Typ poskytující objekt funkce, který může porovnat dvě hodnoty prvků pro určení jejich relativního pořadí v objektu map.Tento argument je nepovinný a 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<constKey*,* Type> >.
Poznámky
Třída map knihovny STL (Standard Template Library) je:
Kontejner s proměnnou velikostí, který efektivně načte hodnoty prvku na základě přidružených hodnot klíče.
Oboustranný, protože poskytuje obousměrné iterátory pro přístup k jeho prvkům.
Seřazená, protože její prvky jsou seřazeny podle hodnot klíče podle zadané funkce porovnání.
Jedinečná, vzhledem k tomu, že každý z jejích prvků musí mít jedinečný klíč.
Kontejner asociativních párů, protože jeho prvky hodnoty dat se liší od hodnot klíčů.
Třída šablony, protože funkce, které poskytuje jsou obecné a nezávislé na prvku nebo typu klíče.Datové typy použité pro prvky a klíče jsou 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říd insert a map mají verze, které jako parametry šablony berou slabší vstupní iterátor, jehož požadavky na funkce jsou menší než ty, které jsou zaručeny třídou obousměrných iterátorů.Různé koncepty iterátorů se týkají upřesnění jejich funkčnosti.Každý koncept iterátoru má vlastní sadu požadavků a algoritmy, které s ním pracují musí být omezeny těmito požadavky.Ke vstupnímu iterátoru lze přistoupit přes ukazatel pro odkazování na některý objekt a může být zvýšena na další iterátor v sekvenci.
Doporučujeme založit volbu typu kontejneru podle druhu vyhledávání a vkládání, který je požadován 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 provedeny v nejhorším čase, který je ú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.
Doporučujeme objekt map vytvořit jako asociativní kontejner volby, pokud jsou v aplikaci splněny podmínky, které přiřazují hodnoty klíčům.Model tohoto typu struktury je uspořádaný seznam jednoznačně se vyskytujících klíčových slov, které mají přidružené hodnoty řetězce poskytující definice.Má-li slovo více než jednu správnou definici, takže tento klíč není jedinečný, potom by třída multimap měla být zvoleným kontejnerem.Pokud je uložen jen seznam slov, pak by třída set měla být vhodným kontejnerem.Pokud je povoleno více výskytů slova, měla by být použita třída multiset.
Třída map seřadí prvky pomocí volání uloženého objektu funkce typu key_compare.Tento uložený objekt je funkce porovnání, která je přístupná pomocí volání metody key_comp.Obecně jsou dva dané prvky porovnány pro určení, zda je jeden menší než druhý nebo zda jsou stejné.Při porovnání všech prvků je vytvořena seřazená sekvence neekvivalentních prvků.
[!POZNÁMKA]
Funkce porovnání je binární predikát, který indukuje přísné slabé seřazení ve standardním matematickém smyslu.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
Sestaví seznam určité velikosti nebo s prvky určité hodnoty nebo s určitým objektem allocator nebo jako kopii jiného objektu map. |
Typedefs
Definice typu třídy allocator pro objekt map. |
|
Definice typu pro obousměrný iterátor, který může číst prvky const v objektu map. |
|
Definice typu ukazatele na prvek const v objektu map. |
|
Definice typu odkazu na prvek const uložený v objektu map pro čtení a provádění operace const. |
|
Typ, který poskytuje obousměrný iterátor, který může přečíst jakýkoli prvek const v objektu map. |
|
Definice typu celého čísla se znaménkem pro počet prvků objektu map 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 map. |
|
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 map. |
|
Definice typu klíče řazení uloženého v jednotlivých prvcích objektu map. |
|
Definice typu dat uložených v jednotlivých prvcích objektu map. |
|
Definice typu ukazatele na prvek const v objektu map. |
|
Definice typu odkazu na prvek uložený v objektu map. |
|
Definice typu obousměrného iterátoru, který může číst nebo upravovat prvek v obráceném objektu map. |
|
Celočíselná definice typu bez znaménka pro počet prvků v objektu map. |
|
Definice typu pro typ objektu, který je uložen jako prvek v objektu map. |
Členské funkce
Vyhledá prvek se zadanou hodnotou klíče. |
|
Vrátí iterátor odkazující na první prvek v objektu map. |
|
Vrátí konstantní iterátor odkazující na první prvek v objektu map. |
|
Vrátí konstantní iterátor za koncem. |
|
Odstraní všechny prvky objektu map. |
|
Vrátí počet prvků objektu map, jejichž klíč odpovídá klíči zadaného parametrem. |
|
Vrátí konstantní iterátor, který odkazuje na první prvek v obráceném objektu map. |
|
Vrátí konstantní iterátor, který odkazuje na umístění za posledním prvkem v převráceném objektu map. |
|
Vloží vytvořený prvek na místo do objektu map. |
|
Vloží vytvořený prvek s náznakem umístění na místo do objektu map. |
|
Vrátí true, pokud je objekt map prázdný. |
|
Vrátí iterátor za koncem. |
|
Vrátí pár iterátorů.První iterátor v páru odkazuje na první prvek objektu map s klíčem, který je větší než zadaný klíč.Druhý iterátor v páru odkazuje na první prvek v objektu map s klíčem, který je roven nebo větší než tento klíč. |
|
Odebere prvek nebo rozsah prvků v objektu map od zadané pozice. |
|
Vrátí iterátor odkazující na umístění prvku v objektu map, který má klíč stejný jako zadaný klíč. |
|
Vrátí kopii objektu allocator, který je použit pro vytvoření objektu map. |
|
Vloží prvek nebo rozsah prvků na určenou pozici do objektu map. |
|
Vrátí kopii objektu porovnání, která je použit pro seřazení klíčů v objektu map. |
|
Vrátí iterátor na první prvek objektu map s hodnotou klíče, který je roven nebo větší než zadaný klíč. |
|
Vrátí maximální délku objektu map. |
|
Vrátí iterátor odkazující na první prvek v obráceném objektu map. |
|
Vrátí iterátor, který odkazuje na umístění za posledním prvkem v převráceném objektu map. |
|
Vrátí počet prvků v objektu map. |
|
Zamění prvky dvou objektů map. |
|
Vrátí iterátor na první prvek objektu map s hodnotou klíče, který je větší než zadaný klíč. |
|
Získá kopii objektu porovnání použitého pro seřazení hodnot prvků objektu map. |
Operátory
Vloží prvek do objektu map se zadanou hodnotou klíče. |
|
Nahradí prvky objektu map kopií jiného objektu map. |
Požadavky
Hlavička: <map>
Obor názvů: std
Viz také
Referenční dokumentace
Bezpečný přístup z více vláken ve standardní knihovně C++