C ++

Cum să iterați pe hartă în C ++

Cum să iterați pe hartă în C ++
În acest tutorial rapid, vom vedea cum să iterați în hartă în C++.

Există mai multe moduri de a itera peste hartă în C++. Cu versiunile mai noi de C ++, există modalități mai avansate de a itera peste hartă în C++.

Să parcurgem fiecare câte unul.

Folosind bucla for cu stp :: map

Am creat o hartă numită countryCapitalMap și i-au inserat perechi cheie-valoare.


#include
#include
#include
#include
#include
folosind spațiul de nume std;
int main ()
// Inițializați o hartă
hartă> „India”, „Delhi”));
countryCapitalMap.inserare (pereche("Nepal", "Kathmandu"));
countryCapitalMap.inserare (pereche(„China”, „Beijing”));
countryCapitalMap.inserare (pereche(„Franța”, „Parisul”));
// Iterează folosind iteratorul în buclă
pentru (auto itr = countryCapitalMap.începe(); itr != countryCapitalMap.Sfârșit(); itr ++)

std :: cout << itr->primul // Tasta de acces
<< ':'
<< itr->al doilea // Valoare de acces
<< std::endl;

retur 0;


Ieșire:

China: Beijing
Franța: Paris
India: Delhi
Nepal: Kathmandu

După cum puteți vedea, am imprimat țara: capital (cheie: valoare) folosind bucla pentru.

Dacă observați, am folosit auto specificatorul de tip pentru iteratorul hărții din cauza lizibilității. Poți să folosești Hartă:: iterator în mod explicit, de asemenea.
Notă: Dacă vedeți ieșirea, aceasta este sortată după taste în ordine crescătoare. Acest lucru se datorează faptului că std :: map este un container asociativ sortat cu Comparator furnizat (versiunea C ++ 11 în continuare). Deoarece nu am furnizat niciun comparator, deci C ++ a folosit comparatorul implicit pentru șir.

Folosind bucla while cu stp :: map

De asemenea, putem folosi o buclă while în loc de buclă.


#include
#include
#include
#include >
folosind spațiul de nume std;
int main ()
// Inițializați o hartă
Hartă countryCapitalMap;
// Introduceți diferite elemente în hartă
countryCapitalMap.inserare (pereche(„India”, „Delhi”));
countryCapitalMap.inserare (pereche(„Nepal”, „Kathmandu”));
countryCapitalMap.inserare (pereche(„China”, „Beijing”));
countryCapitalMap.inserare (pereche(„Franța”, „Parisul”));
// Creați un iterator pentru hartă și inițializați cu begin
auto itr = countryCapitalMap.începe();
// Iterează folosind iteratorul în bucla while
în timp ce (itr!= countryCapitalMap.Sfârșit())

std :: cout << itr->primul // Tasta de acces
<< ':'
<< itr->al doilea // Valoare de acces
<< std::endl;
itr ++;

retur 0;


Ieșire:

China: Beijing
Franța: Paris
India: Delhi
Nepal: Kathmandu

Utilizarea Range based pentru buclă (versiunea C ++ 11 în continuare)

Dacă utilizați versiunea C ++ 11, atunci acesta este cel mai elegant mod de a itera peste hartă în C++. Puteți evita buclele tradiționale neplăcute și le puteți folosi în schimb.


#include
#include
#include
folosind spațiul de nume std;
int main ()
// Inițializați o hartă
Hartă countryCapitalMap;
// Introduceți diferite elemente în hartă
countryCapitalMap.inserare (pereche(„India”, „Delhi”));
countryCapitalMap.inserare (pereche("Nepal", "Kathmandu"));
countryCapitalMap.inserare (pereche(„China”, „Beijing”));
countryCapitalMap.inserare (pereche(„Franța”, „Parisul”));
// Iterează folosind iteratorul în buclă
pentru (const auto & ele: countryCapitalMap)
cout <
retur 0;


Ieșire:
China: Beijing
Franța: Paris
India: Delhi
Nepal: Kathmandu

Folosirea intervalului pentru buclă cu perechi cheie-valoare (versiunea C ++ 17 în continuare)

Această versiune este acceptată începând cu c ++ 17 și oferă o modalitate mai flexibilă de iterare pe hartă. Puteți accesa în mod explicit perechea cheie-valoare pe hartă, care oferă o soluție și mai lizibilă.


#include
#include
#include
folosind spațiul de nume std;
int main ()
// Inițializați o hartă
Hartă countryCapitalMap;
// Introduceți diferite elemente în hartă
countryCapitalMap.inserare (pereche(„India”, „Delhi”));
countryCapitalMap.inserare (pereche("Nepal", "Kathmandu"));
countryCapitalMap.inserare (pereche(„China”, „Beijing”));
countryCapitalMap.inserare (pereche(„Franța”, „Parisul”));
// Iterează folosind iteratorul în buclă
pentru (const auto & [cheie, valoare]: countryCapitalMap)
cout << key << ":" << value << "\n";

retur 0;


Ieșire:
China: Beijing
Franța: Paris
India: Delhi
Nepal: Kathmandu

Totul este despre cum să iterați pe hartă în C++. Codificare fericită!

Motoare de jocuri gratuite și open source pentru dezvoltarea jocurilor Linux
Acest articol va acoperi o listă de motoare de jocuri gratuite și open source care pot fi utilizate pentru dezvoltarea jocurilor 2D și 3D pe Linux. Ex...
Tutorial Shadow of the Tomb Raider pentru Linux
Shadow of the Tomb Raider este a douăsprezecea completare a seriei Tomb Raider - o franciză de jocuri de acțiune-aventură creată de Eidos Montreal. Jo...
Cum se mărește FPS în Linux?
FPS înseamnă Cadre pe secundă. Sarcina FPS este de a măsura rata de cadre în redările video sau în performanțele jocului. În cuvinte simple, numărul d...