logo

mapová funkce C++

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&lt;pair"> // map::allocator_type &gt; 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] = &apos;Nikita&apos;; Employees[105] = &apos;John&apos;; Employees[103] = &apos;Dolly&apos;; Employees[104] = &apos;Deep&apos;; Employees[102] = &apos;Aman&apos;; cout &lt;&lt; &apos;Employees[104]=&apos; &lt;&lt; Employees[104] &lt;&lt; endl &lt;&lt; endl; cout &lt;&lt; &apos;Map size: &apos; &lt;&lt; Employees.size() &lt;&lt; endl; cout &lt;&lt; endl &lt;&lt; &apos;Natural Order:&apos; &lt;&lt; endl; for( map::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii) { cout &lt;&lt; (*ii).first &lt;&lt; &apos;: &apos; &lt;&lt; (*ii).second &lt;&lt; endl; } cout &lt;&lt; endl &lt;&lt; &apos;Reverse Order:&apos; &lt;&lt; endl; for( map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii) { cout &lt;&lt; (*ii).first &lt;&lt; &apos;: &apos; &lt;&lt; (*ii).second &lt;&lt; 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.