Kuinka kartoittaa karttaa C ++: ssa

How Iterate Over Map C



Tässä nopeassa opetusohjelmassa näemme kuinka iteroida kartalla C ++: ssa.

Kartan toistamiseen C ++: ssa on useita tapoja. C ++: n uudemmissa versioissa on kehittyneempiä tapoja kartoittaa karttaa C ++: ssa.







Käydään jokainen läpi yksitellen.



Käytetään silmukassa stp :: mapin kanssa

Olemme luoneet kartan nimeltä | _+_ | ja lisäsi siihen avain-arvo-parit.



<varten>
#sisältää
#sisältää
#sisältää
#sisältää
#sisältää
käyttämällä nimiavaruustuntia;
inttärkein() {
// Alusta kartta
kartta>'Intia','Delhi'));
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Nepal','Kathmandu'));
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Kiina','Peking'));
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Ranska','Pariisi'));

// Toista käyttämällä iteraattoria silmukassa
varten (autoitr=countryCapitalMap.alkaa();itr!=countryCapitalMap.loppuun();itr++)
{
tuntia::kustannus <<itr->ensimmäinen// Avainkoodi
<< ':'
<<itr->toinen// Pääsyarvo
<<tuntia::endl;
}
palata 0;
}
</varten>
Lähtö:
<varten>
Kiina:Peking
Ranska:Pariisi
Intia:Delhi
Nepal:Kathmandu
</varten>

Kuten näette, olemme tulostaneet maa: pääoma (avain: arvo) käyttämällä silmukkaa.





Jos huomaat, olemme käyttäneet | _+_ | kartan iteraattorin tyyppimäärittely luettavuuden vuoksi. Voit käyttää | _+_ | myös nimenomaisesti.
Huomautus: Jos näet tuloksen, se lajitellaan avainten mukaan nousevassa järjestyksessä. Tämä johtuu siitä, että std :: map on lajiteltu assosiatiivinen säilö ja mukana toimitettu Comparator (versio C ++ 11 alkaen). Koska emme toimittaneet vertailua, C ++ on käyttänyt merkkijonon oletusvertailijaa.

Käyttämällä while -silmukkaa stp :: mapin kanssa

Voimme myös käyttää while -silmukkaa silmukan sijasta.



<varten>
#sisältää
#sisältää
#sisältää
#Sisällytä>
käyttämällä nimiavaruustuntia;
inttärkein() {
// Alusta kartta
kartta<merkkijono, merkkijono>countryCapitalMap;
// Lisää eri elementtejä karttaan
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Intia','Delhi'));
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Nepal','Kathmandu'));
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Kiina','Peking'));
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Ranska','Pariisi'));


// Luo iteraattori kartalle ja aloita alusta
autoitr=countryCapitalMap.alkaa();
// Toista iteraattorin avulla silmukan aikana
sillä aikaa (itr!=countryCapitalMap.loppuun())
{
tuntia::kustannus <<itr->ensimmäinen// Avainkoodi
<< ':'
<<itr->toinen// Pääsyarvo
<<tuntia::endl;
itr++;
}
palata 0;
}
</varten>
Lähtö:
<varten>
Kiina:Peking
Ranska:Pariisi
Intia:Delhi
Nepal:Kathmandu
</varten>

Range -pohjaisen silmukan käyttäminen (versio C ++ 11 eteenpäin)

Jos käytät C ++ 11 -versiota, tämä on tyylikkäin tapa toistaa karttaa C ++: ssa. Voit välttää perinteiset kuperat silmukat ja käyttää tätä sen sijaan.

<varten>
#sisältää
#sisältää
#sisältää

käyttämällä nimiavaruustuntia;
inttärkein() {
// Alusta kartta
kartta<merkkijono, merkkijono>countryCapitalMap;
// Lisää eri elementtejä karttaan
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Intia','Delhi'));
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Nepal','Kathmandu'));
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Kiina','Peking'));
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Ranska','Pariisi'));


// Toista käyttämällä iteraattoria silmukassa
varten (const auto &hän:countryCapitalMap) {
kustannus <<hän.ensimmäinen << ':' <<hän.toinen<<'' n'';
}

palata 0;
}
</varten>
Lähtö:
Kiina:Peking
Ranska:Pariisi
Intia:Delhi
Nepal:Kathmandu

Aluepohjaisen käytön käyttö silmukalla avainarvopareilla (versio C ++ 17 eteenpäin)

Tätä versiota tuetaan c ++ 17: stä alkaen ja se tarjoaa joustavamman tavan kartoittaa karttaa. Voit käyttää nimenomaan avainarvoparia kartalla, joka tarjoaa entistä luettavamman ratkaisun.

<varten>
#sisältää
#sisältää
#sisältää

käyttämällä nimiavaruustuntia;
inttärkein() {
// Alusta kartta
kartta<merkkijono, merkkijono>countryCapitalMap;
// Lisää eri elementtejä karttaan
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Intia','Delhi'));
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Nepal','Kathmandu'));
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Kiina','Peking'));
countryCapitalMap.lisää(pari<merkkijono, merkkijono>('Ranska','Pariisi'));


// Toista käyttämällä iteraattoria silmukassa
varten (const auto& [avain, arvo] :countryCapitalMap) {
kustannus <<näppäintä<< ':' <<arvo<< '' n'';
}

palata 0;
}
</varten>
Lähtö:
Kiina:Peking
Ranska:Pariisi
Intia:Delhi
Nepal:Kathmandu

Kyse on siitä, miten kartoittaa karttaa C ++: ssa. Hyvää koodausta!