logo

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 gquiz2(gquiz1.begin(), gquiz1.end()); // imprimă toate elementele hărții gquiz2 cout<< ' The map gquiz2 after' << ' assign from gquiz1 is : '; cout << ' KEY ELEMENT '; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } cout << endl; // remove all elements up to // element with key=3 in gquiz2 cout << ' gquiz2 after removal of' ' elements less than key=3 : '; cout << ' KEY ELEMENT '; gquiz2.erase(gquiz2.begin(), gquiz2.find(3)); for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } // remove all elements with key = 4 int num; num = gquiz2.erase(4); cout << ' gquiz2.erase(4) : '; cout << num << ' removed '; cout << ' KEY ELEMENT '; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << ' ' ' ' << ' '; } cout << endl; // lower bound and upper bound for map gquiz1 key = 5 cout << 'gquiz1.lower_bound(5) : ' << ' KEY = '; cout ' '; cout << ' ELEMENT = ' << endl; cout << 'gquiz1.upper_bound(5) : ' << ' KEY = '; cout ' '; cout << ' ELEMENT = ' << endl; return 0; }>

>

>

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# conține șir



// 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.