Mapy jsou asociativní kontejnery které ukládají prvky zmapovaným způsobem. Každý prvek má hodnotu klíče a namapovanou hodnotu. Žádné dvě namapované hodnoty nemohou mít stejné hodnoty klíče.
std::map je šablona třídy pro mapové kontejnery a je definována uvnitř hlavičkového souboru.
Základní členské funkce std::map
Některé základní funkce spojené s std::map jsou:
- začít() – Vrátí iterátor na první prvek na mapě.
- konec() – Vrátí iterátor teoretického prvku, který následuje za posledním prvkem na mapě.
- velikost() – Vrátí počet prvků na mapě.
- max_size() – Vrátí maximální počet prvků, které mapa pojme.
- prázdný() – Vrací, zda je mapa prázdná.
- pair insert(keyvalue, mapvalue) – Přidá na mapu nový prvek.
- vymazat (pozice iterátoru) – Odebere prvek v pozici, na kterou ukazuje iterátor.
- vymazat (konst g) – Odebere z mapy pár klíč–hodnota ‚g‘.
- Průhledná() – Odstraní všechny prvky z mapy.
Příklady std::map
Následující příklady ukazují, jak provádět základní operace na mapových kontejnerech.
Příklad 1: Funkce begin() a end().
C++
třídit haldy
// C++ program to illustrate the begin and end iterator> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>t.t. // Vložte do mapy nějaké hodnoty mp['one'] = 1; mp['dva'] = 2; mp['tři'] = 3; // Získá iterátor ukazující na první prvek v // map mapint>::iterator it = mp.begin(); // Iterujte mapu a vytiskněte prvky while (it != mp.end()) { cout<< 'Key: ' << ', Value: ' ++it; } return 0; }> |
>
>Výstup
Key: one, Value: 1 Key: three, Value: 3 Key: two, Value: 2>
Složitost výše uvedené metody:
Časová složitost: O(n) kde n je velikost mapy.
Pomocný prostor: Na)
Příklad 2: funkce size().
C++
// C++ program to illustrate the size() function> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>mapa; // Vložte nějaké hodnoty do mapy map['one'] = 1; mapa['dva'] = 2; mapa['tři'] = 3; // Vytiskne velikost mapy cout<< 'Size of map: ' << map.size() << endl; return 0; }> |
>
>Výstup
Size of map: 3>
Složitost výše uvedené metody:
Časová složitost: O(1).
Příklad 3: Implementace mapy
CPP
myliverriclet
// CPP Program to demonstrate the implementation in Map> // divyansh mishra -->divyanshmishra101010> #include> #include> #include> using> namespace> std;> int> main()> {> >// empty map container> >map<>int>,>int>>gquiz1;> >// insert elements in random order> >gquiz1.insert(pair<>int>,>int>>(1, 40));> >gquiz1.insert(pair<>int>,>int>>(2, 30));> >gquiz1.insert(pair<>int>,>int>>(3, 60));> >gquiz1.insert(pair<>int>,>int>>(4, 20));> >gquiz1.insert(pair<>int>,>int>>(5, 50));> >gquiz1.insert(pair<>int>,>int>>(6, 50));> >// another way of inserting a value in a map> >gquiz1[7] = 10;> >// printing map gquiz1> >map<>int>,>int>>::iterator itr;> >cout <<>'
The map gquiz1 is :
'>;> >cout <<>' KEY ELEMENT
'>;> >for> (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) {> >cout <<>' '> ' ' << '
'; } cout << endl; // assigning the elements from gquiz1 to gquiz2 map |
>
>Výstup
The map gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 20 5 50 6 50 7 10 The map gquiz2 after assign from gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 20 5 50 6 50 7 10 gquiz2 after remov...>
Složitost výše uvedené metody:
Časová složitost: O(n log(n)), protože n je velikost mapy
Pomocný prostor: Na)
Příklad 4: Implementace mapy celých čísel
C++
linuxové zkratky
// C++ program to implement map container> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>mapa; // Vložte nějaké hodnoty do mapy map['one'] = 1; mapa['dva'] = 2; mapa['tři'] = 3; // Vytiskne hodnoty v mapě cout<< 'Key: one, Value: ' << map['one'] << endl; cout << 'Key: two, Value: ' << map['two'] << endl; cout << 'Key: three, Value: ' << map['three'] << endl; // Check if a key is in the map if (map.count('four')>0) { cout<< 'Key 'four' is in the map' << endl; } else { cout << 'Key 'four' is not in the map' << endl; } return 0; }> |
>
>Výstup
Key: one, Value: 1 Key: two, Value: 2 Key: three, Value: 3 Key 'four' is not in the map>
Seznam všech funkcí std::map
Následující tabulka obsahuje všechny funkce definované ve třídě std::map.
| Funkce | Definice |
|---|---|
| mapa::insert() | Vložte prvky s konkrétním klíčem do kontejneru mapy –> O(log n) |
| mapa:: počet() | Vrátí počet shod prvku s párem klíč–hodnota ‚g‘ na mapě. –> O(log n) |
| map equal_range() | Vrátí iterátor párů. Dvojice odkazuje na hranice rozsahu, který zahrnuje všechny prvky v kontejneru, které mají klíč ekvivalentní k. |
| vymazání mapy () | Používá se k vymazání prvků z kontejneru –> O(log n) |
| mapa rend() | Vrátí zpětný iterátor ukazující na teoretický prvek těsně před prvním párem klíč–hodnota v mapě (který je považován za jeho opačný konec). |
| mapa rbegin()
| Vrátí zpětný iterátor, který ukazuje na poslední prvek mapy. |
| najít mapu () | Vrátí iterátor prvku s párem klíč–hodnota ‚g‘ v mapě, pokud je nalezen, jinak vrátí iterátor na konec. |
| map crbegin() a crend() | crbegin() vrací konstantní reverzní iterátor odkazující na poslední prvek v kontejneru mapy. crend() vrací konstantní reverzní iterátor ukazující na teoretický prvek před prvním prvkem v mapě. |
| map cbegin() a cend() | cbegin() vrací konstantní iterátor odkazující na první prvek v kontejneru mapy. cend() vrací konstantní iterátor ukazující na teoretický prvek, který následuje za posledním prvkem v multimapě. |
| mapa emplace() | Vloží klíč a jeho prvek do kontejneru mapy. |
| mapa max_size() | Vrátí maximální počet prvků, které může kontejner mapy pojmout –> O(1) |
| mapa horní_mez() | Vrátí iterátor na první prvek, který je ekvivalentní namapované hodnotě s párem klíč–hodnota „g“, nebo bude určitě následovat prvek s párem klíč–hodnota „g“ v mapě. dijkstra |
| mapový operátor= | Přiřadí obsah kontejneru jinému kontejneru a nahradí jeho aktuální obsah. |
| map lower_bound() | Vrátí iterátor na první prvek, který je ekvivalentní namapované hodnotě s párem klíč–hodnota ‚g‘ nebo rozhodně nebude předcházet prvku s párem klíč–hodnota ‚g‘ v mapě –> O(log n) |
| mapa emplace_hint() | Vloží klíč a jeho prvek do kontejneru mapy s danou nápovědou. |
| map value_comp() | Vrátí objekt, který určuje, jak jsou prvky v mapě uspořádány (ve výchozím nastavení „<“. |
| mapa key_comp() | Vrátí objekt, který určuje, jak jsou prvky v mapě uspořádány (ve výchozím nastavení „<“. |
| mapa::velikost() | Vrátí počet prvků v mapě. |
| mapa::prázdný() | Vrací, zda je mapa prázdná |
| map::begin() a end() | begin() vrací iterátor k prvnímu prvku v mapě. end() vrací iterátor teoretického prvku, který následuje za posledním prvkem v mapě |
| mapa::operátor[] | Tento operátor se používá k odkazování na prvek přítomný na pozici dané uvnitř operátoru. |
| mapa::jasný() | Odstraní všechny prvky z mapy. |
| map::at() a mapa::swap() | Funkce at() se používá k vrácení odkazu na prvek spojený s klíčem k. Funkce swap() se používá k výměně obsahu dvou map, ale mapy musí být stejného typu, i když velikosti se mohou lišit. |