Hartă în C++ Standard Template Library (STL)
Hărțile sunt recipiente asociative care stochează elemente într-un mod mapat. Fiecare element are o valoare cheie și o valoare mapată. Nu există două valori mapate care pot avea aceleași valori cheie.
std::map este șablonul de clasă pentru containerele de hărți și este definit în interiorul fișierului antet.
Funcții de bază pentru membri std::map
Unele funcții de bază asociate cu std::map sunt:
- ÎNCEPE() – Returnează un iterator la primul element din hartă.
- Sfârşit() – Returnează un iterator la elementul teoretic care urmează ultimul element din hartă.
- mărimea() – Returnează numărul de elemente din hartă.
- max_size() – Returnează numărul maxim de elemente pe care harta le poate conține.
- gol() – Returnează dacă harta este goală.
- inserare pereche (cheie, valoare map) – Adaugă un nou element pe hartă.
- ștergere (poziția iteratorului) – Îndepărtează elementul în poziția indicată de iterator.
- șterge (const g) – Elimină cheia-valoare „g” de pe hartă.
- clar() – Elimină toate elementele de pe hartă.
Exemple de std::map
Următoarele exemple arată cum să efectuați operațiuni de bază pe containerele de hărți.
Exemplul 1: funcția begin() și 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>p.t.; // Inserați câteva valori în hartă mp['one'] = 1; mp['două'] = 2; mp['trei'] = 3; // Obține un iterator care indică primul element din // mapint>::iterator it = mp.begin(); // Repetați harta și imprimați elementele while (it != mp.end()) { cout < < 'Key: ' < < ', Value: ' ++it; } return 0; }> |
Ieșire
Key: one, Value: 1 Key: three, Value: 3 Key: two, Value: 2
Complexitatea metodei de mai sus:
Complexitatea timpului: O(n) unde n este dimensiunea hărții.
Spațiu auxiliar: Pe)
Exemplul 2: funcția 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>Hartă; // Inserați câteva valori în harta hărții['one'] = 1; harta['două'] = 2; harta['trei'] = 3; // Tipăriți dimensiunea hărții < < 'Size of map: ' < < map.size() < < endl; return 0; }> |
Ieșire
Size of map: 3
Complexitatea metodei de mai sus:
Complexitatea timpului: O(1).
Exemplul 3: Implementarea hărții
CPP
// 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 |
Ieșire
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...
Complexitatea metodei de mai sus:
Complexitatea timpului: O(n log(n)) deoarece n este dimensiunea hărții
Spatiu auxiliar: Pe)
Exemplul 4: Implementarea hărții numerelor întregi
C++
// C++ program to implement map container> #include> #include> #include> using> namespace> std;> int> main()> {> > // Create a map of strings to integers> > mapint>Hartă; // Inserați câteva valori în harta hărții['one'] = 1; harta['două'] = 2; harta['trei'] = 3; // Imprimă valorile în harta 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; }> |
Ieșire
Key: one, Value: 1 Key: two, Value: 2 Key: three, Value: 3 Key 'four' is not in the map
Lista tuturor funcțiilor std::map
Următorul tabel conține toate funcțiile definite în clasa std::map.
| Funcţie | Definiție |
|---|---|
| map::insert() | Inserați elemente cu o anumită cheie în containerul hărții –> O(log n) |
| harta:: count() | Returnează numărul de potriviri la elementul cu cheia-valoare „g” din hartă. –> O(log n) |
| harta equal_range() | Returnează un iterator de perechi. Perechea se referă la limitele unui interval care include toate elementele din container care au o cheie echivalentă cu k. |
| ștergerea hărții () | Folosit pentru a șterge elemente din container –> O(log n) |
| map rend() | Returnează un iterator invers care indică elementul teoretic chiar înaintea primei perechi cheie-valoare din hartă (care este considerată finalul său invers). |
| harta rbegin()
| Returnează un iterator invers care indică ultimul element al hărții. |
| găsiți harta() | Returnează un iterator la elementul cu cheia-valoare „g” din hartă dacă este găsit, altfel returnează iteratorul la sfârșit. |
| harta crbegin() și crend() | crbegin() returnează un iterator invers constant care se referă la ultimul element din containerul hărții. crend() returnează un iterator invers constant care indică elementul teoretic înainte de primul element din hartă. |
| harta cbegin() și cend() | cbegin() returnează un iterator constant care se referă la primul element din containerul hărții. cend() returnează un iterator constant care indică elementul teoretic care urmează ultimul element din multimap. |
| harta emplace() | Inserează cheia și elementul acesteia în containerul hărții. |
| harta max_size() | Returnează numărul maxim de elemente pe care un container de hartă poate conține –> O(1) |
| harta upper_bound() | Returnează un iterator la primul element care este echivalent cu valoarea mapată cu valoarea cheie „g” sau cu siguranță va merge după elementul cu valoarea cheie „g” din hartă |
| operator de hartă= | Atribuie conținutul unui container unui alt container, înlocuind conținutul său actual. |
| harta low_bound() | Returnează un iterator la primul element care este echivalent cu valoarea mapată cu valoarea cheie „g” sau cu siguranță nu va merge înaintea elementului cu valoarea cheie „g” din hartă –> O(log n) |
| harta emplace_hint() | Inserează cheia și elementul acesteia în containerul hărții cu un indiciu dat. |
| map value_comp() | Returnează obiectul care determină modul în care sunt ordonate elementele din hartă („ <‘ implicit). |
| hartă key_comp() | Returnează obiectul care determină modul în care sunt ordonate elementele din hartă („ <‘ implicit). |
| map::size() | Returnează numărul de elemente din hartă. |
| map::empty() | Returnează dacă harta este goală |
| map::begin() și end() | begin() returnează un iterator la primul element din hartă. end() returnează un iterator la elementul teoretic care urmează ultimul element din hartă |
| harta::operator[] | Acest operator este folosit pentru a face referire la elementul prezent la poziția dată în interiorul operatorului. |
| harta::clear() | Elimină toate elementele de pe hartă. |
| map::at() și map::swap() | Funcția at() este folosită pentru a returna referința la elementul asociat cu cheia k. Funcția swap() este utilizată pentru a schimba conținutul a două hărți, dar hărțile trebuie să fie de același tip, deși dimensiunile pot diferi. |