Zemljevidi so asociativni vsebniki ki shranjujejo elemente na preslikan način. Vsak element ima ključno vrednost in preslikano vrednost. Dve preslikani vrednosti ne moreta imeti enakih ključnih vrednosti.
std::map je predloga razreda za vsebnike zemljevidov in je definirana znotraj datoteke glave.
Osnovne funkcije članov std::map
Nekatere osnovne funkcije, povezane s std::map, so:
- začeti() – Vrne iterator prvemu elementu na zemljevidu.
- konec () – Vrne iterator teoretičnemu elementu, ki sledi zadnjemu elementu v preslikavi.
- velikost () – Vrne število elementov na zemljevidu.
- max_size() – Vrne največje število elementov, ki jih zemljevid lahko vsebuje.
- prazno() – Vrne, ali je zemljevid prazen.
- par vstavi (ključna vrednost, preslikana vrednost) – Na zemljevid doda nov element.
- izbriši (položaj iteratorja) – Odstrani element na položaju, na katerega kaže iterator.
- izbriši (const g) – Odstrani ključ-vrednost 'g' z zemljevida.
- počisti() – Odstrani vse elemente z zemljevida.
Primeri std::map
Naslednji primeri prikazujejo, kako izvajati osnovne operacije na vsebnikih zemljevidov.
Primer 1: Funkciji begin() in end().
C++
// 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>mp; // Vstavi nekaj vrednosti v zemljevid mp['one'] = 1; mp['dva'] = 2; mp['tri'] = 3; // Pridobite iterator, ki kaže na prvi element v mapint mapint>::iterator it = mp.begin(); // Iteracija skozi zemljevid in tiskanje elementov while (it != mp.end()) { cout<< 'Key: ' << ', Value: ' ++it; } return 0; }> |
>
>Izhod
Key: one, Value: 1 Key: three, Value: 3 Key: two, Value: 2>
Kompleksnost zgornje metode:
Časovna zahtevnost: O(n), kjer je n velikost zemljevida.
kdaj se konča q1Pomožni prostor: O(n)
Primer 2: funkcija 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>zemljevid; // Vstavi nekaj vrednosti v zemljevid map['one'] = 1; zemljevid['dva'] = 2; zemljevid['tri'] = 3; // Natisni velikost zemljevida cout<< 'Size of map: ' << map.size() << endl; return 0; }> |
>
>Izhod
Size of map: 3>
Kompleksnost zgornje metode:
Časovna zahtevnost: O(1).
Primer 3: Implementacija zemljevida
CPP
uvoz skenerja java
// 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>>gkviz1;> >// 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 |
>
>Izhod
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...>
Kompleksnost zgornje metode:
Časovna zahtevnost: O(n log(n)), saj je n velikost zemljevida
Pomožni prostor: O(n)
Primer 4: Implementacija preslikave celih števil
C++
pretvori nfa v dfa
// C++ program to implement map container> #include> #include> #include> using> namespace> std;> int> main()> {> >// Create a map of strings to integers> >mapint>zemljevid; // Vstavi nekaj vrednosti v zemljevid map['one'] = 1; zemljevid['dva'] = 2; zemljevid['tri'] = 3; // Natisni vrednosti v zemljevidu 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) { izhod<< 'Key 'four' is in the map' << endl; } else { cout << 'Key 'four' is not in the map' << endl; } return 0; }> |
>
plasti modela osi
>Izhod
Key: one, Value: 1 Key: two, Value: 2 Key: three, Value: 3 Key 'four' is not in the map>
Seznam vseh funkcij std::map
Naslednja tabela vsebuje vse funkcije, definirane znotraj razreda std::map.
| funkcija | Opredelitev |
|---|---|
| map::insert() | Vstavi elemente z določenim ključem v vsebnik zemljevida –> O(log n) |
| zemljevid:: štetje() | Vrne število ujemanj z elementom s ključno vrednostjo »g« na zemljevidu. –> O(log n) |
| preslikava equal_range() | Vrne iterator parov. Par se nanaša na meje obsega, ki vključuje vse elemente v vsebniku, ki imajo ključ, enak k. |
| brisanje zemljevida () | Uporablja se za brisanje elementov iz vsebnika –> O(log n) |
| zemljevid rend() | Vrne povratni iterator, ki kaže na teoretični element tik pred prvim parom ključ-vrednost v preslikavi (ki se šteje za njegov povratni konec). |
| zemljevid rbegin()
| Vrne povratni iterator, ki kaže na zadnji element zemljevida. |
| map find() | Vrne iterator elementu s ključno vrednostjo 'g' na zemljevidu, če je najden, drugače vrne iterator na konec. |
| preslikava crbegin() in crend() | crbegin() vrne stalni povratni iterator, ki se nanaša na zadnji element v vsebniku zemljevida. crend() vrne stalni povratni iterator, ki kaže na teoretični element pred prvim elementom v preslikavi. |
| preslikava cbegin() in cend() | cbegin() vrne stalni iterator, ki se nanaša na prvi element v vsebniku zemljevida. cend() vrne stalni iterator, ki kaže na teoretični element, ki sledi zadnjemu elementu v multimapu. |
| zemljevid emplace() | Vstavi ključ in njegov element v vsebnik zemljevida. |
| zemljevid max_size() | Vrne največje število elementov, ki jih lahko vsebuje vsebnik zemljevida –> O(1) |
| preslikava upper_bound() | Vrne iterator prvemu elementu, ki je enakovreden preslikani vrednosti s ključno vrednostjo »g« ali bo zagotovo šel za elementom s ključno vrednostjo »g« na preslikavi |
| operater zemljevida= | Dodeli vsebino vsebnika drugemu vsebniku in nadomesti njegovo trenutno vsebino. |
| preslikava bottom_bound() | Vrne iterator prvemu elementu, ki je enakovreden preslikani vrednosti s ključno vrednostjo 'g' ali zagotovo ne bo šel pred elementom s ključno vrednostjo 'g' v preslikavi –> O(log n) |
| zemljevid emplace_hint() | Vstavi ključ in njegov element v vsebnik zemljevida z danim namigom. |
| map value_comp() | Vrne objekt, ki določa, kako so elementi na zemljevidu urejeni (»<« privzeto). |
| preslikava key_comp() | Vrne objekt, ki določa, kako so elementi na zemljevidu urejeni (»<« privzeto). |
| zemljevid::velikost() | Vrne število elementov na zemljevidu. java je instanceof |
| zemljevid::prazno() | Vrne, ali je zemljevid prazen |
| map::begin() in end() | begin() vrne iterator prvemu elementu v preslikavi. end() vrne iterator teoretičnemu elementu, ki sledi zadnjemu elementu v preslikavi |
| map::operator[] | Ta operator se uporablja za sklicevanje na element, ki je prisoten na položaju, podanem znotraj operatorja. |
| map::clear() | Odstrani vse elemente z zemljevida. |
| map::at() in map::swap() | funkcija at() se uporablja za vrnitev sklica na element, povezan s ključem k. funkcija swap() se uporablja za izmenjavo vsebine dveh zemljevidov, vendar morata biti zemljevida iste vrste, čeprav se velikosti lahko razlikujejo. |