C ++

Hvordan iterere over kartet i C ++

Hvordan iterere over kartet i C ++
I denne raske opplæringen vil vi se hvordan du kan gjenta i kart i C++.

Det er flere måter å gjenta over kartet i C++. Med nyere versjoner av C ++ er det mer avanserte måter å gjenta over kartet i C++.

La oss gå gjennom hver og en.

Bruker for loop med stp :: map

Vi har laget et kart med navnet countryCapitalMap og satt inn nøkkelverdipar til den.


#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
bruker navneområde std;
int main ()
// Initialiser et kart
kart> "India", "Delhi"));
countryCapitalMap.sett inn (par("Nepal", "Kathmandu"));
countryCapitalMap.sett inn (par("Kina", "Beijing"));
countryCapitalMap.sett inn (par("Frankrike", "Paris"));
// Iterere ved å bruke iterator in for loop
for (auto itr = countryCapitalMap.begynne(); itr != countryCapitalMap.slutt(); itr ++)

std :: cout << itr->første // Tilgangsnøkkel
<< ':'
<< itr->andre // Tilgangsverdi
<< std::endl;

retur 0;


Produksjon:

Kina: Beijing
Frankrike: Paris
India: Delhi
Nepal: Katmandu

Som du kan se, har vi skrevet land: hovedstad (nøkkel: verdi) ved hjelp av for loop.

Hvis du merker, har vi brukt auto typespesifikator for kart iterator på grunn av lesbarhet. Du kan bruke kart:: iterator eksplisitt også.
Merk: Hvis du ser utdataene, sorteres den etter nøkler i stigende rekkefølge. Dette er fordi std :: map er en sortert assosiativ beholder med medfølgende komparator (versjon C ++ 11 og utover). Siden vi ikke ga noen komparator, har C ++ brukt standardkomparatoren for streng.

Bruker mens sløyfe med stp :: kart

Vi kan også bruke en while-løkke i stedet for for loop.


#inkludere
#inkludere
#inkludere
#inkludere >
bruker navneområde std;
int main ()
// Initialiser et kart
kart countryCapitalMap;
// Sett inn forskjellige elementer i kartet
countryCapitalMap.sett inn (par("India", "Delhi"));
countryCapitalMap.sett inn (par("Nepal", "Kathmandu"));
countryCapitalMap.sett inn (par("Kina", "Beijing"));
countryCapitalMap.sett inn (par("Frankrike", "Paris"));
// Lag en iterator for kartet og initialiser med begynn
auto itr = countryCapitalMap.begynne();
// Iterere ved å bruke iterator i mens loop
while (itr!= countryCapitalMap.slutt())

std :: cout << itr->første // Tilgangsnøkkel
<< ':'
<< itr->andre // Tilgangsverdi
<< std::endl;
itr ++;

retur 0;


Produksjon:

Kina: Beijing
Frankrike: Paris
India: Delhi
Nepal: Katmandu

Bruker Range based for loop (C ++ 11 versjon og utover)

Hvis du bruker C ++ 11-versjonen, er dette den mest elegante måten å gjenta over kart i C++. Du kan unngå tradisjonelle kubiske løkker og bruke dette i stedet.


#inkludere
#inkludere
#inkludere
bruker navneområde std;
int main ()
// Initialiser et kart
kart countryCapitalMap;
// Sett inn forskjellige elementer i kartet
countryCapitalMap.sett inn (par("India", "Delhi"));
countryCapitalMap.sett inn (par("Nepal", "Kathmandu"));
countryCapitalMap.sett inn (par("Kina", "Beijing"));
countryCapitalMap.sett inn (par("Frankrike", "Paris"));
// Iterere ved å bruke iterator in for loop
for (const auto & ele: countryCapitalMap)
cout <
retur 0;


Produksjon:
Kina: Beijing
Frankrike: Paris
India: Delhi
Nepal: Katmandu

Bruker rekkeviddebasert for loop med nøkkelverdipar (C ++ 17-versjonen og utover)

Denne versjonen støttes fra c ++ 17 og utover og gir en mer fleksibel måte for iterering over kartet. Du kan eksplisitt få tilgang til nøkkelverdipar i kartet som gir enda mer lesbar løsning.


#inkludere
#inkludere
#inkludere
bruker navneområde std;
int main ()
// Initialiser et kart
kart countryCapitalMap;
// Sett inn forskjellige elementer i kartet
countryCapitalMap.sett inn (par("India", "Delhi"));
countryCapitalMap.sett inn (par("Nepal", "Kathmandu"));
countryCapitalMap.sett inn (par("Kina", "Beijing"));
countryCapitalMap.sett inn (par("Frankrike", "Paris"));
// Iterere ved å bruke iterator in for loop
for (const auto & [key, value]: countryCapitalMap)
cout << key << ":" << value << "\n";

retur 0;


Produksjon:
Kina: Beijing
Frankrike: Paris
India: Delhi
Nepal: Katmandu

Det handler om hvordan du kan gjenta over kartet i C++. Glad koding!

Hvordan bruke AutoKey til å automatisere Linux-spill
AutoKey er et desktopautomatiseringsverktøy for Linux og X11, programmert i Python 3, GTK og Qt. Ved å bruke skript og MACRO-funksjonalitet kan du aut...
Hvordan vise FPS-teller i Linux-spill
Linux-spill fikk et stort press da Valve kunngjorde Linux-støtte for Steam-klient og spillene deres i 2012. Siden den gang har mange AAA- og indiespil...
Hvordan laste ned og spille Sid Meier's Civilization VI på Linux
Introduksjon til spillet Civilization 6 er et moderne syn på det klassiske konseptet som ble introdusert i serien av Age of Empires-spillene. Ideen va...