Det er flere måter å gjenta på kartet i C ++. Med nyere versjoner av C ++ er det mer avanserte måter å iterere over kartet i C ++.
La oss gå gjennom hver og en.
Bruker for loop med stp :: map
Vi har laget et kart som heter | _+_ | og satte inn nøkkelverdi-par til den.
<til>
#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
ved hjelp av navneområdetimer;
inthoved-() {
// Initialiser et kart
kart>'India','Delhi'));
countryCapitalMap.sett inn(par<streng, streng>('Nepal','Katmandu'));
countryCapitalMap.sett inn(par<streng, streng>('Kina','Beijing'));
countryCapitalMap.sett inn(par<streng, streng>('Frankrike','Paris'));
// Iterer ved hjelp av iterator i for loop
til (autoitr=countryCapitalMap.begynne();itr!=countryCapitalMap.slutt();itr++)
{
timer::koste <<itr->først// Tilgangsnøkkel
<< ':'
<<itr->sekund// Tilgangsverdi
<<timer::endl;
}
komme tilbake 0;
}
</til>
Produksjon:
<til>
Kina:Beijing
Frankrike:Paris
India:Delhi
Nepal:Katmandu
</til>
Som du kan se, har vi skrevet ut country: capital (nøkkel: verdi) ved hjelp av loop.
Hvis du merker det, har vi brukt | _+_ | type spesifiserer for kart iterator på grunn av lesbarhet. Du kan bruke | _+_ | eksplisitt også.
Merk: Hvis du ser utgangen, blir den sortert etter nøkler i stigende rekkefølge. Dette er fordi std :: map er en sortert assosiativ beholder med medfølgende Comparator (versjon C ++ 11 og utover). Siden vi ikke ga noen komparator, så har C ++ brukt standardkomparatoren for streng.
Bruker mens loop med stp :: map
Vi kan også bruke en while -loop i stedet for for loop.
<til>
#inkludere
#inkludere
#inkludere
#include>
ved hjelp av navneområdetimer;
inthoved-() {
// Initialiser et kart
kart<streng, streng>countryCapitalMap;
// Sett inn forskjellige elementer i kartet
countryCapitalMap.sett inn(par<streng, streng>('India','Delhi'));
countryCapitalMap.sett inn(par<streng, streng>('Nepal','Katmandu'));
countryCapitalMap.sett inn(par<streng, streng>('Kina','Beijing'));
countryCapitalMap.sett inn(par<streng, streng>('Frankrike','Paris'));
// Lag en iterator for kartet og initialiser med start
autoitr=countryCapitalMap.begynne();
// Iterer ved å bruke iterator i mens loop
samtidig som (itr!=countryCapitalMap.slutt())
{
timer::koste <<itr->først// Tilgangsnøkkel
<< ':'
<<itr->sekund// Tilgangsverdi
<<timer::endl;
itr++;
}
komme tilbake 0;
}
</til>
Produksjon:
<til>
Kina:Beijing
Frankrike:Paris
India:Delhi
Nepal:Katmandu
</til>
Bruker Range based for loop (C ++ 11 versjon og fremover)
Hvis du bruker C ++ 11 -versjonen, er dette den mest elegante måten å gjenta over kart i C ++. Du kan unngå tradisjonelle cubersome sløyfer og bruke denne i stedet.
<til>#inkludere
#inkludere
#inkludere
ved hjelp av navneområdetimer;
inthoved-() {
// Initialiser et kart
kart<streng, streng>countryCapitalMap;
// Sett inn forskjellige elementer i kartet
countryCapitalMap.sett inn(par<streng, streng>('India','Delhi'));
countryCapitalMap.sett inn(par<streng, streng>('Nepal','Katmandu'));
countryCapitalMap.sett inn(par<streng, streng>('Kina','Beijing'));
countryCapitalMap.sett inn(par<streng, streng>('Frankrike','Paris'));
// Iterer ved hjelp av iterator i for loop
til (konst auto &han:countryCapitalMap) {
koste <<han.først << ':' <<han.sekund<<' n';
}
komme tilbake 0;
}
</til>
Produksjon:
Kina:Beijing
Frankrike:Paris
India:Delhi
Nepal:Katmandu
Bruke områdebasert for loop med nøkkel-verdipar (C ++ 17 versjon og fremover)
Denne versjonen støttes fra c ++ 17 og utover og gir en mer fleksibel måte for iterasjon over kartet. Du kan eksplisitt få tilgang til nøkkel-verdipar på kartet som gir enda mer lesbar løsning.
<til>#inkludere
#inkludere
#inkludere
ved hjelp av navneområdetimer;
inthoved-() {
// Initialiser et kart
kart<streng, streng>countryCapitalMap;
// Sett inn forskjellige elementer i kartet
countryCapitalMap.sett inn(par<streng, streng>('India','Delhi'));
countryCapitalMap.sett inn(par<streng, streng>('Nepal','Katmandu'));
countryCapitalMap.sett inn(par<streng, streng>('Kina','Beijing'));
countryCapitalMap.sett inn(par<streng, streng>('Frankrike','Paris'));
// Iterer ved hjelp av iterator i for loop
til (konst auto& [nøkkel, verdi] :countryCapitalMap) {
koste <<nøkkel<< ':' <<verdi<< ' n';
}
komme tilbake 0;
}
</til>
Produksjon:
Kina:Beijing
Frankrike:Paris
India:Delhi
Nepal:Katmandu
Det handler om hvordan du gjentar over kartet i C ++. God koding!