Ce este std :: map?
În C ++, un MAP este un container asociativ care stochează articole într-o formă mapată. Fiecare element din hartă este compus din valoare-cheie și o valoare mapată. Două valori mapate nu pot partaja aceleași valori cheie.
Valorile cheie sunt bune pentru sortarea și identificarea elementelor în mod unic. Valorile mapate sunt pentru stocarea conținutului asociat cheii. Cele două pot diferi ca tipuri, dar tipul de membru le combină printr-un tip de pereche care le combină pe amândouă.
În acest tutorial C ++, veți învăța:
- Ce este std :: map?
- De ce să folosiți std :: map?
- Sintaxă:
- Tipuri de membri:
- Funcții încorporate
- Iterarea elementelor hărții
- Introducerea datelor în std :: map:
- Căutarea într-o hartă
- Ștergerea datelor de pe o hartă
De ce să folosiți std :: map?
Iată, sunt motive pentru utilizarea hărții:
- std :: map stochează cheile unice numai în ordine sortată pe baza criteriilor de sortare alese.
- Este ușor și mai rapid să căutați elemente folosind tasta.
- Fiecare tastă este atașată unui singur element.
- std :: map poate fi folosit ca matrice asociativă.
- std :: map este implementabil folosind arbori binari (echilibrați).
Sintaxă:
Pentru a declara std :: map, utilizați această sintaxă:
std::mapmap_name;
- Key_datatype denotă tipul de date al cheilor de hartă.
- Value_datatype denotă tipul de date al valorilor corespunzătoare cheilor de hartă.
- Map_name este numele hărții.
De exemplu:
mapmy_map;
Am declarat o hartă numită my_map. Harta va avea un șir ca tipuri de date cheie și întreg ca tip de date valori .
Tipuri de membri:
Funcțiile de membru pot utiliza următoarele tipuri de membri, fie ca parametri, fie ca tip de returnare:
- key_type: Key (Primul parametru din șablon)
- mapped_type: T (Al doilea parametru din șablon)
- key_compare: Compare (Al treilea parametru din șablon)
- allocator_type: Alloc (Al patrulea parametru din șablon)
- value_type: pair
- value_compare: Clasa de funcții imbricate pentru compararea elementelor
- referință: allocator_type :: reference
- const_reference: allocator_type :: const_reference
- pointer: allocator_type :: pointer
- const_pointer: allocator_type :: const_pointer
- iterator: un iterator bidirecțional la valoarea_tip
- const_iterator: un iterator bidirecțional către const value_type
- reverse_iterator: un iterator invers
- const_reverse_iterator: un iterator invers constant
- tip_diferență : ptrdiff_t
- size_type: size_t
Funcții încorporate
std :: map vine cu funcții încorporate. Unele dintre acestea includ:
- begin () - Această funcție readuce iteratorul la primul element al hărții.
- size () - Această funcție returnează numărul de articole dintr-o hartă.
- empty () - Această funcție returnează o valoare booleană care indică dacă o hartă este goală.
- insert (pereche (cheie, valoare)) - Această funcție introduce o nouă pereche cheie-valoare pe o hartă.
- find (val) - Această funcție oferă iteratorul elementului val dacă este găsit. În caz contrar, va reveni m.end ().
- Ștergere (poziția iteratorului) - Această funcție șterge elementul în poziția indicată de iterator.
- șterge (const g) - Această funcție șterge valoarea cheie g dintr-o hartă.
- Clear () - Această funcție șterge toate articolele dintr-o hartă.
Iterarea elementelor hărții
Puteți itera peste elementele hărții. Pur și simplu trebuie să creăm un iterator și să-l folosim pentru aceasta. De exemplu:
Exemplul 1:
#include#include #include
Ieșire:
Iată o captură de ecran a codului:
Explicatie cod:
- Includeți fișierul antet iostream în codul nostru pentru a-i folosi funcțiile.
- Includeți fișierul antet șir în codul nostru pentru a utiliza funcțiile sale.
- Includeți fișierul antet hartă în codul nostru pentru a-i folosi funcțiile.
- Includeți spațiul de nume std în codul nostru pentru a utiliza clasele sale fără a-l apela.
- Apelați funcția main (). {Marchează începutul corpului funcției.
- Creați o hartă numită Studenți în care cheile vor fi întregi, iar valorile vor fi șiruri.
- Introduceți valori în hartă Studenți. O cheie de 200 și o valoare Alice vor fi inserate pe hartă.
- Introduceți valori în hartă Studenți. O cheie de 201 și o valoare de John vor fi inserate pe hartă.
- Utilizați funcția size () pentru a obține dimensiunea hărții numite Studenți. Aceasta ar trebui să returneze un 2.
- Imprimați un text pe consolă.
- Utilizați o buclă for pentru a crea un iterator numit pentru a itera peste elementele hărții numite Studenți.
- Imprimați valorile hărții Studenți pe consolă.
- Sfârșitul corpului buclei for.
- Sfârșitul corpului funcției main ().
Inserarea datelor în std :: map
Puteți introduce elemente în std :: map folosind funcția insert (). Rețineți că tastele std :: map trebuie să fie unice.
Deci, verifică mai întâi dacă fiecare cheie este prezentă pe hartă. Dacă este prezent, intrarea nu va fi inserată, dar returnează iteratorul pentru intrarea existentă. Dacă nu este prezentă, intrarea este inserată.
Funcția are următoarele variante:
- insert (pair) - cu această variație, o pereche cheie-valoare este inserată în hartă.
- insert (start_itr, end_itr) - cu această variantă, intrările vor fi inserate în intervalul definit de start_itr și end_itr dintr-o altă hartă.
Funcția insert_or_assing () funcționează la fel ca funcția insert (), dar dacă cheia dată există deja pe hartă, valoarea acesteia va fi modificată.
Exemplul 2:
#include
Ieșire:
Iată o captură de ecran a codului:
Explicatie cod:
- Includeți fișierul antet hartă în codul nostru pentru a-i folosi funcțiile.
- Includeți fișierul antet iostream în codul nostru pentru a-i folosi funcțiile.
- Includeți spațiul de nume std în codul nostru pentru a utiliza clasele sale fără a-l apela.
- Apelați funcția main (). {Marchează începutul corpului funcției.
- Creați o hartă numită m unde cheile vor fi întregi, iar valorile vor fi întregi. Au fost făcute trei intrări pe hartă.
- Introduceți o nouă intrare pe hartă m. O cheie de 5 și o valoare de 6 vor fi inserate pe hartă.
- Încercarea de a face o intrare într-o cheie deja existentă. Deoarece cheia 1 există deja pe hartă, intrarea nu va fi făcută.
- Folosind funcția insert_or_assign () pentru a insera sau modifica o intrare existentă. Deoarece cheia 1 există deja, valoarea acesteia va fi schimbată la 6.
- Imprimați un text pe consolă. Caracterul „\ t” creează un spațiu orizontal în timp ce caracterul „\ n” deplasează cursorul mouse-ului pe linia următoare.
- Utilizați o buclă for pentru a crea un iterator numit itr pentru a itera peste elementele hărții numite m.
- Imprimați valorile hărții m pe consolă. Caracterul „\ t” creează un spațiu orizontal între fiecare tastă și valoarea sa corespunzătoare. În contrast, caracterul „\ n” mută cursorul mouse-ului pe linia următoare după fiecare iterație.
- Sfârșitul corpului pentru o buclă.
- Programul trebuie să returneze valoarea la finalizarea cu succes.
- Sfârșitul corpului funcției main ().
Căutarea într-o hartă
Putem folosi funcția find () pentru a căuta elemente într-o hartă prin tastele lor. Dacă cheia nu este găsită, funcția returnează std :: map :: end. În caz contrar, va fi returnat un iterator al elementului căutat.
Exemplul 2:
#include#include #include
Ieșire:
Iată o captură de ecran a codului:
Explicatie cod:
- Includeți fișierul antet iostream în codul nostru pentru a-i folosi funcțiile fără a primi erori.
- Includeți fișierul antet șir în codul nostru pentru a utiliza funcțiile sale fără a primi erori.
- Includeți fișierul antet hartă în codul nostru pentru a-i folosi funcțiile fără a primi erori.
- Includeți spațiul de nume std în codul nostru pentru a utiliza clasele sale fără a-l apela.
- Apelați funcția main (). {Marchează începutul corpului funcției main ().
- Creați o hartă numită Studenți ale căror chei vor fi numere întregi și șiruri de valori.
- Introduceți valori în hartă Studenți. O cheie de 200 și o valoare Alice vor fi inserate pe hartă.
- Introduceți valori în hartă Studenți. O cheie de 201 și o valoare de John vor fi inserate pe hartă.
- Căutați valoarea asociată cu o cheie 201.
- Utilizați o instrucțiune if pentru a verifica dacă se găsește valoarea cheii.
- Imprimați valoarea cheii alături de un text de pe consolă.
- Sfârșitul corpului afirmației if.
- Sfârșitul corpului funcției main ().
Ștergerea datelor de pe o hartă
Putem folosi funcția erase () pentru a șterge o valoare dintr-o hartă. Pur și simplu creăm un iterator care indică elementul care trebuie șters. Iteratorul este apoi trecut la funcția erase ().
Exemplul 3:
#include#include #include
Ieșire:
Iată o captură de ecran a codului:
Explicatie cod:
- Includeți fișierul antet iostream în codul nostru pentru a-i folosi funcțiile.
- Includeți fișierul antet șir în codul nostru pentru a utiliza funcțiile sale.
- Includeți fișierul antet hartă în codul nostru pentru a-i folosi funcțiile.
- Includeți spațiul de nume std în codul nostru pentru a utiliza clasele sale fără a-l apela.
- Apelați funcția main (). {Marchează începutul corpului funcției main ().
- Creați o hartă numită my_map ale cărei chei vor fi șiruri și valori întregi.
- Introduceți valori în hartă my_map. O cheie de vacă și o valoare de 1 vor fi inserate pe hartă.
- Introduceți valori în hartă my_map. O cheie de Cat și o valoare de 2 vor fi inserate pe hartă.
- Adăugați o valoare 3 în hartă my_map cu o cheie de leu.
- Creați un iterator pentru a itera pe hartă my_map în căutarea pisicii cheie.
- Ștergeți elementul indicat de iterator.
- Utilizați un iterator pentru a itera peste elementele hărții my_map de la început până la sfârșit.
- Imprimați conținutul hărții my_map pe consolă.
- Programul trebuie să returneze rezultatul după finalizarea cu succes.
- Sfârșitul corpului funcției main ().
Rezumat:
- O hartă este un container asociativ care stochează articole într-o formă mapată.
- Fiecare element din hartă are o valoare cheie și o valoare mapată.
- Într-o hartă, două valori mapate nu pot partaja valori cheie.
- Valorile cheie ajută la sortarea și identificarea elementelor în mod unic.
- Valorile mapate ajută la stocarea conținutului asociat cu cheia.
- Harta C ++ stochează chei unice în ordine sortată.
- Pentru a lucra cu harta C ++, creăm un iterator pentru a itera peste elemente.
- Cu iteratorul, putem efectua sarcini precum căutarea și ștergerea articolelor de pe hartă.