Sådan gentages over kortet i C ++

How Iterate Over Map C



I denne hurtige vejledning ser vi, hvordan det gentages på kortet i C ++.

Der er flere måder at itereere over kortet i C ++. Med nyere versioner af C ++ er der mere avancerede måder at itereere over kortet i C ++.







Lad os gå igennem hver enkelt efter en.



Brug til loop med stp :: map

Vi har oprettet et kort med navnet | _+_ | og indsatte nøgleværdipar til den.



<til>
#omfatte
#omfatte
#omfatte
#omfatte
#omfatte
ved brug af navnerumtimer;
intvigtigste() {
// Initialiser et kort
kort>'Indien','Delhi'));
countryCapitalMap.indsæt(par<snor, snor>('Nepal','Kathmandu'));
countryCapitalMap.indsæt(par<snor, snor>('Kina','Beijing'));
countryCapitalMap.indsæt(par<snor, snor>('Frankrig','Paris'));

// Iterer ved hjælp af iterator i for loop
til (autoitr=countryCapitalMap.begynde();itr!=countryCapitalMap.ende();itr++)
{
timer::koste <<itr->først// Adgangsnøgle
<< ':'
<<itr->sekund// Adgangsværdi
<<timer::endl;
}
Vend tilbage 0;
}
</til>
Produktion:
<til>
Kina:Beijing
Frankrig:Paris
Indien:Delhi
Nepal:Kathmandu
</til>

Som du kan se, har vi udskrevet country: capital (nøgle: værdi) ved hjælp af for loop.





Hvis du bemærker det, har vi brugt | _+_ | type specificer for map iterator på grund af læsbarheden. Du kan bruge | _+_ | også eksplicit.
Bemærk: Hvis du ser output, sorteres det efter nøgler i stigende rækkefølge. Dette skyldes, at std :: map er en sorteret associativ beholder med den medfølgende Comparator (version C ++ 11 og fremefter). Da vi ikke leverede nogen komparator, så har C ++ brugt standardkomparatoren til streng.

Brug while loop med stp :: map

Vi kan også bruge et stykke loop i stedet for for loop.



<til>
#omfatte
#omfatte
#omfatte
#include>
ved brug af navnerumtimer;
intvigtigste() {
// Initialiser et kort
kort<snor, snor>countryCapitalMap;
// Indsæt forskellige elementer i kortet
countryCapitalMap.indsæt(par<snor, snor>('Indien','Delhi'));
countryCapitalMap.indsæt(par<snor, snor>('Nepal','Kathmandu'));
countryCapitalMap.indsæt(par<snor, snor>('Kina','Beijing'));
countryCapitalMap.indsæt(par<snor, snor>('Frankrig','Paris'));


// Opret en iterator til kortet, og initialiser med start
autoitr=countryCapitalMap.begynde();
// Iterér ved hjælp af iterator i while loop
mens (itr!=countryCapitalMap.ende())
{
timer::koste <<itr->først// Adgangsnøgle
<< ':'
<<itr->sekund// Adgangsværdi
<<timer::endl;
itr++;
}
Vend tilbage 0;
}
</til>
Produktion:
<til>
Kina:Beijing
Frankrig:Paris
Indien:Delhi
Nepal:Kathmandu
</til>

Brug af område baseret på loop (C ++ 11 version og fremefter)

Hvis du bruger C ++ 11 -versionen, er dette den mest elegante måde at gentage kortet over i C ++. Du kan undgå traditionelle cubersome sløjfer og bruge dette i stedet.

<til>
#omfatte
#omfatte
#omfatte

ved brug af navnerumtimer;
intvigtigste() {
// Initialiser et kort
kort<snor, snor>countryCapitalMap;
// Indsæt forskellige elementer i kortet
countryCapitalMap.indsæt(par<snor, snor>('Indien','Delhi'));
countryCapitalMap.indsæt(par<snor, snor>('Nepal','Kathmandu'));
countryCapitalMap.indsæt(par<snor, snor>('Kina','Beijing'));
countryCapitalMap.indsæt(par<snor, snor>('Frankrig','Paris'));


// Iterer ved hjælp af iterator i for loop
til (konst auto &han:countryCapitalMap) {
koste <<han.først << ':' <<han.sekund<<' n';
}

Vend tilbage 0;
}
</til>
Produktion:
Kina:Beijing
Frankrig:Paris
Indien:Delhi
Nepal:Kathmandu

Brug af områdebaseret loop til nøgleværdipar (C ++ 17 version og fremefter)

Denne version understøttes fra c ++ 17 og fremefter og giver en mere fleksibel måde til iterering over kortet. Du kan eksplicit få adgang til nøgleværdipar på kortet, hvilket giver en endnu mere læsbar løsning.

<til>
#omfatte
#omfatte
#omfatte

ved brug af navnerumtimer;
intvigtigste() {
// Initialiser et kort
kort<snor, snor>countryCapitalMap;
// Indsæt forskellige elementer i kortet
countryCapitalMap.indsæt(par<snor, snor>('Indien','Delhi'));
countryCapitalMap.indsæt(par<snor, snor>('Nepal','Kathmandu'));
countryCapitalMap.indsæt(par<snor, snor>('Kina','Beijing'));
countryCapitalMap.indsæt(par<snor, snor>('Frankrig','Paris'));


// Iterer ved hjælp af iterator i for loop
til (konst auto& [nøgle, værdi] :countryCapitalMap) {
koste <<nøgle<< ':' <<værdi<< ' n';
}

Vend tilbage 0;
}
</til>
Produktion:
Kina:Beijing
Frankrig:Paris
Indien:Delhi
Nepal:Kathmandu

Det handler om, hvordan man gentager over kortet i C ++. Glad kodning!