Hvordan iterere over kartet i C ++

Hvordan iterere over kartet i C ++
I denne raske opplæringen vil vi se hvordan du kan iterere over i MAP i C++. Det er flere måter å iterere over kartet i C++. Med nyere versjoner av C ++ er det mer avanserte måter å iterere over kartet i C++. La oss gå gjennom hver enkelt etter en.

Bruker for loop med std :: kart

Vi har laget et kart som heter countrycapitalmap og satte inn nøkkelverdipar til det. Vi bruker deretter en iterator for å gjøre en for loop gjennom medlemmene av kartdatastrukturen.

#inkludere
#inkludere
#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()
// Initialiser et kart
kartcountrycapitalmap;
countrycapitalmap.Sett inn (par("Nepal", "Kathmandu"));
countrycapitalmap.Sett inn (par("Kina", "Beijing"));
countrycapitalmap.Sett inn (par("Frankrike", "Paris"));
// iterate ved hjelp av iterator i for loop
for (auto itr = countrycapitalmap.begynne();
itr != countrycapitalmap.slutt(); itr ++)
std :: cout << itr->First // Access -tasten
<< ':'
<< itr->andre // tilgangsverdi
<< std::endl;

retur 0;
Produksjon:
Kina: Beijing
Frankrike: Paris
Nepal: Kathmandu

Som du ser, har vi trykt land: kapital (nøkkel: verdi) bruker for loop.

Hvis du legger merke til det, har vi brukt bil Skriv spesifikasjon 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 :: kart er en sortert assosiativ beholder med levert komparator (versjon C ++ 11 og utover). Siden vi ikke ga noen komparator, har C ++ brukt standardkomparatoren for streng.

Bruker mens Loop med STP :: Kart

Vi kan også bruke en stundsløyfe i stedet for for loop.

#inkludere
#inkludere
#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()
// Initialiser et kart
kart countrycapitalmap;
// Sett inn forskjellige elementer på kart
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 begynnende
auto itr = countrycapitalmap.begynne();
// iterate ved hjelp av iterator inn mens du er loop
mens (itr!= countrycapitalmap.slutt())

std :: cout << itr->First // Access -tasten
<< ':'
<< itr->andre // tilgangsverdi
<< std::endl;
ITR ++;

retur 0;

Produksjon:

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

Bruker rekkevidde basert på loop (C ++ 11 -versjon og utover)

Hvis du bruker C ++ 11 -versjon, er dette mest elegant måte å iterere over kart i C++. Du kan unngå tradisjonelle kubersome løkker og bruke dette i stedet.

#inkludere
#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()
// Initialiser et kart
kart countrycapitalmap;
// Sett inn forskjellige elementer på kart
countrycapitalmap.Sett inn (par("India", "Delhi"));
countrycapitalmap.Sett inn (par("Nepal", "Kathmandu"));
countrycapitalmap.Sett inn (par("Kina", "Beijing"));
countrycapitalmap.Sett inn (par("Frankrike", "Paris"));
// iterate ved hjelp av iterator i for loop
for (const auto & ele: countrycapitalMap)
cout <
retur 0;
Produksjon:
Kina: Beijing
Frankrike: Paris
India: Delhi
Nepal: Kathmandu

Bruker rekkeviddebasert for loop med nøkkelverdi-par (C ++ 17-versjon og utover)

Denne versjonen støttes fra C ++ 17 og utover og gir en mer fleksibel måte å iterere over kartet. Du kan eksplisitt få tilgang til nøkkelverdi-par i MAP som gir enda mer lesbar løsning.

#inkludere
#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()
// Initialiser et kart
kart countrycapitalmap;
// Sett inn forskjellige elementer på kart
countrycapitalmap.Sett inn (par("India", "Delhi"));
countrycapitalmap.Sett inn (par("Nepal", "Kathmandu"));
countrycapitalmap.Sett inn (par("Kina", "Beijing"));
countrycapitalmap.Sett inn (par("Frankrike", "Paris"));
// iterate ved hjelp av iterator i for loop
for (const auto & [nøkkel, verdi]: countrycapitalmap)
cout << key << ":" << value << "\n";

retur 0;
Produksjon:
Kina: Beijing
Frankrike: Paris
India: Delhi
Nepal: Kathmandu

Det handler om hvordan du kan iterere over kartet i C++.