Mapy jsou součástí C++ STL (Standard Template Library). Mapy jsou asociativní kontejnery, které ukládají setříděný pár klíč–hodnota, ve kterém je každý klíč jedinečný a lze jej vložit nebo odstranit, ale nelze jej změnit. Hodnoty spojené s klíči lze změnit.
Například: Mapu zaměstnanců, kde je ID zaměstnance klíčem a jméno je hodnotou, lze reprezentovat jako:
Klíče | Hodnoty |
---|---|
101 | Nikita |
102 | Červenka |
103 | Hluboký |
104 | John |
Syntax
template <class key, map::key_type class t, map::mapped_type compare="less," map::key_compare alloc="allocator<pair"> // map::allocator_type > class map; </class>
Parametr
klíč: Klíčový datový typ, který se má uložit do mapy.
typ: Datový typ hodnoty, která má být uložena v mapě.
porovnej: Porovnávací třída, která přebírá dva argumenty stejného typu bool a vrací hodnotu. Tento argument je volitelný a binární predikát less je výchozí hodnotou.
alokovat: Typ objektu alokátoru. Tento argument je volitelný a výchozí hodnota je alokátor .
teorie automatů
Vytvoření mapy
Mapy lze snadno vytvořit pomocí následujícího příkazu:
typedef pair value_type;
Výše uvedený formulář se použije k vytvoření mapy s klíčem typu Typ klíče a hodnotu typu typ hodnoty. Jedna důležitá věc je, že klíč mapy a odpovídající hodnoty jsou vždy vloženy jako pár, nelze do mapy vložit pouze klíč nebo jen hodnotu.
Příklad 1
#include #include #include #include using namespace std; int main() { map Employees; // 1) Assignment using array index notation Employees[101] = 'Nikita'; Employees[105] = 'John'; Employees[103] = 'Dolly'; Employees[104] = 'Deep'; Employees[102] = 'Aman'; cout << 'Employees[104]=' << Employees[104] << endl << endl; cout << 'Map size: ' << Employees.size() << endl; cout << endl << 'Natural Order:' << endl; for( map::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } cout << endl << 'Reverse Order:' << endl; for( map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } }
Výstup:
Employees[104]=Deep Map size: 5 Natural Order: 101: Nikita 102: Aman 103: Dolly 104: Deep 105: John Reverse Order: 105: John 104: Deep 103: Dolly 102: Aman 101: Nikita
Funkce členů
Níže je uveden seznam všech členských funkcí mapy:
Stavitel/ničitel
Funkce | Popis |
---|---|
konstruktéři | Vytvořte mapu |
ničitelé | Destruktor map |
operátor= | Zkopírujte prvky mapy na jinou mapu. |
Iterátory
Funkce | Popis |
---|---|
začít | Vrátí iterátor ukazující na první prvek v mapě. |
cbegin | Vrátí const iterator ukazující na první prvek v mapě. |
konec | Vrátí iterátor ukazující na minulý konec. |
trochu | Vrátí konstantní iterátor ukazující na minulý konec. |
začít | Vrátí zpětný iterátor ukazující na konec. |
dělá | Vrátí zpětný iterátor ukazující na začátek. |
crbegin | Vrátí konstantní reverzní iterátor ukazující na konec. |
věřit | Vrátí konstantní reverzní iterátor ukazující na začátek. |
Kapacita
Funkce | Popis |
---|---|
prázdný | Pokud je mapa prázdná, vrátí hodnotu true. |
velikost | Vrátí počet prvků v mapě. |
max_size | Vrátí maximální velikost mapy. |
Přístup k prvku
Funkce | Popis |
---|---|
operátor[] | Získejte prvek s daným klíčem. |
na | Získejte prvek s daným klíčem. |
Modifikátory
Funkce | Popis |
---|---|
vložit | Vložit prvek do mapy. |
vymazat | Vymazat prvky z mapy. |
vyměnit | Vyměňte obsah mapy. |
Průhledná | Odstraňte všechny prvky mapy. |
umístění | Vytvořte a vložte nové prvky do mapy. |
emplace_hint | Vytvářejte a vkládejte nové prvky do mapy pomocí nápovědy. |
Pozorovatelé
Funkce | Popis |
---|---|
key_comp | Vraťte kopii objektu porovnání klíčů. |
value_comp | Vraťte kopii objektu porovnání hodnot. |
Operace
Funkce | Popis |
---|---|
nalézt | Vyhledejte prvek s daným klíčem. |
počet | Získá počet prvků odpovídajících danému klíči. |
dolní_mez | Vrátí iterátor na spodní hranici. |
horní hranice | Vrátí iterátor na horní hranici. |
stejný_rozsah | Vrátí rozsah prvků odpovídajících danému klíči. |
Alokátor
Funkce | Popis |
---|---|
get_allocator | Vrátí objekt alokátoru, který se používá k vytvoření mapy. |
Nečlenské přetížené funkce
Funkce | Popis |
---|---|
operátor== | Zkontroluje, zda jsou obě mapy stejné nebo ne. |
operátor!= | Zkontroluje, zda jsou obě mapy stejné nebo ne. |
operátor< | Zkontroluje, zda je první mapa menší než jiná nebo ne. |
operátor<=< td> | Kontroluje, zda je první mapa menší nebo rovna jiné nebo ne. | =<>
operátor> | Zkontroluje, zda je první mapa větší než jiná nebo ne. |
operátor>= | Zkontroluje, zda je první mapa větší než rovna jiné nebo ne. |
swap() | Vymění prvek dvou map. |