Det finns flera sätt att iterera över kartan i C ++. Med nyare versioner av C ++ finns det mer avancerade sätt att iterera över kartan i C ++.
Låt oss gå igenom var och en.
Använd för for loop med stp :: map
Vi har skapat en karta med namnet | _+_ | och infogade nyckel-värdepar till den.
<för>
#omfatta
#omfatta
#omfatta
#omfatta
#omfatta
använder sig av namnrymdtimmar;
inthuvud() {
// Initiera en karta
Karta>'Indien','Delhi'));
countryCapitalMap.Föra in(par<sträng, sträng>('Nepal','Katmandu'));
countryCapitalMap.Föra in(par<sträng, sträng>('Kina','Peking'));
countryCapitalMap.Föra in(par<sträng, sträng>('Frankrike','Paris'));
// Iterera med iterator in for loop
för (bilitr=countryCapitalMap.Börja();itr!=countryCapitalMap.slutet();itr++)
{
timmar::kosta <<itr->först// Åtkomstnyckel
<< ':'
<<itr->andra// Åtkomstvärde
<<timmar::endl;
}
lämna tillbaka 0;
}
</för>
Produktion:
<för>
Kina:Peking
Frankrike:Paris
Indien:Delhi
Nepal:Katmandu
</för>
Som du kan se har vi tryckt land: kapital (nyckel: värde) med hjälp av loop.
Om du märker det har vi använt | _+_ | typspecifikator för map iterator på grund av läsbarhet. Du kan använda | _+_ | uttryckligen också.
Notera: Om du ser utdata sorteras den efter nycklar i stigande ordning. Detta beror på att std :: map är en sorterad associativ behållare med levererad Comparator (version C ++ 11 och framåt). Eftersom vi inte gav någon komparator, så har C ++ använt standardkomparatorn för sträng.
Använda while loop med stp :: map
Vi kan också använda en stund -loop istället för för loop.
<för>
#omfatta
#omfatta
#omfatta
#inkludera>
använder sig av namnrymdtimmar;
inthuvud() {
// Initiera en karta
Karta<sträng, sträng>countryCapitalMap;
// Infoga olika element i kartan
countryCapitalMap.Föra in(par<sträng, sträng>('Indien','Delhi'));
countryCapitalMap.Föra in(par<sträng, sträng>('Nepal','Katmandu'));
countryCapitalMap.Föra in(par<sträng, sträng>('Kina','Peking'));
countryCapitalMap.Föra in(par<sträng, sträng>('Frankrike','Paris'));
// Skapa en iterator för kartan och initiera med start
bilitr=countryCapitalMap.Börja();
// Iterera med iterator i medan loop
medan (itr!=countryCapitalMap.slutet())
{
timmar::kosta <<itr->först// Åtkomstnyckel
<< ':'
<<itr->andra// Åtkomstvärde
<<timmar::endl;
itr++;
}
lämna tillbaka 0;
}
</för>
Produktion:
<för>
Kina:Peking
Frankrike:Paris
Indien:Delhi
Nepal:Katmandu
</för>
Använda Range based for loop (C ++ 11 version och framåt)
Om du använder C ++ 11 -versionen är det här det mest eleganta sättet att iterera över kartan i C ++. Du kan undvika traditionella cubersome loopar och använda detta istället.
<för>#omfatta
#omfatta
#omfatta
använder sig av namnrymdtimmar;
inthuvud() {
// Initiera en karta
Karta<sträng, sträng>countryCapitalMap;
// Infoga olika element i kartan
countryCapitalMap.Föra in(par<sträng, sträng>('Indien','Delhi'));
countryCapitalMap.Föra in(par<sträng, sträng>('Nepal','Katmandu'));
countryCapitalMap.Föra in(par<sträng, sträng>('Kina','Peking'));
countryCapitalMap.Föra in(par<sträng, sträng>('Frankrike','Paris'));
// Iterera med iterator in for loop
för (konst bil &han:countryCapitalMap) {
kosta <<han.först << ':' <<han.andra<<' n';
}
lämna tillbaka 0;
}
</för>
Produktion:
Kina:Peking
Frankrike:Paris
Indien:Delhi
Nepal:Katmandu
Använda intervallbaserad för loop med nyckel-värdepar (C ++ 17 version och framåt)
Denna version stöds från c ++ 17 och framåt och ger ett mer flexibelt sätt att iterera över kartan. Du kan uttryckligen komma åt nyckel-värdepar i kartan som ger ännu mer läsbar lösning.
<för>#omfatta
#omfatta
#omfatta
använder sig av namnrymdtimmar;
inthuvud() {
// Initiera en karta
Karta<sträng, sträng>countryCapitalMap;
// Infoga olika element i kartan
countryCapitalMap.Föra in(par<sträng, sträng>('Indien','Delhi'));
countryCapitalMap.Föra in(par<sträng, sträng>('Nepal','Katmandu'));
countryCapitalMap.Föra in(par<sträng, sträng>('Kina','Peking'));
countryCapitalMap.Föra in(par<sträng, sträng>('Frankrike','Paris'));
// Iterera med iterator in for loop
för (konst bil& [nyckelvärde] :countryCapitalMap) {
kosta <<nyckel-<< ':' <<värde<< ' n';
}
lämna tillbaka 0;
}
</för>
Produktion:
Kina:Peking
Frankrike:Paris
Indien:Delhi
Nepal:Katmandu
Det handlar om hur man itererar över kartan i C ++. Glad kodning!