Kaip kartoti žemėlapį naudojant C ++

How Iterate Over Map C



Šioje trumpoje pamokoje pamatysime, kaip kartoti C ++ žemėlapyje.

Yra keli būdai kartoti žemėlapį naudojant C ++. Naudojant naujesnes C ++ versijas, yra sudėtingesnių būdų kartoti žemėlapį naudojant C ++.







Eikime kiekvieną po vieną.



Naudojimas ciklui su stp :: map

Mes sukūrėme žemėlapį pavadinimu | _+_ | ir į jį įterpė raktų reikšmių poras.



<dėl>
#įtraukti
#įtraukti
#įtraukti
#įtraukti
#įtraukti
naudojant vardų sritisvalandų;
tarptpagrindinis() {
// Inicijuoti žemėlapį
žemėlapis>'Indija',„Delis“));
countryCapitalMap.Įdėti(pora<eilutė, styga>(„Nepalas“,„Katmandu“));
countryCapitalMap.Įdėti(pora<eilutė, styga>('Kinija','Pekinas'));
countryCapitalMap.Įdėti(pora<eilutė, styga>('Prancūzija','Paryžius'));

// Pakartokite naudodami iteratorį ciklui
dėl (automatinisitr=countryCapitalMap.pradėti();itr!=countryCapitalMap.galas();itr++)
{
valandų::kaina <<itr->Pirmas// Prieigos raktas
<< ':'
<<itr->antra// Prieigos vertė
<<valandų::endl;
}
grįžti 0;
}
</dėl>
Išvestis:
<dėl>
Kinija:Pekinas
Prancūzija:Paryžius
Indija:Delis
Nepalas:Katmandu
</dėl>

Kaip matote, mes atspausdinome šalį: kapitalą (raktas: vertė), naudodami ciklą.





Jei pastebėjote, naudojome | _+_ | žemėlapio iteratoriaus tipo specifikacija dėl įskaitomumo. Galite naudoti | _+_ | taip pat aiškiai.
Pastaba: Jei matote išvestį, ji rūšiuojama pagal raktus didėjančia tvarka. Taip yra todėl, kad „std :: map“ yra surūšiuotas asociatyvus sudėtinis rodinys su pateikiamu „Comparator“ (versija C ++ 11 ir vėliau). Kadangi nepateikėme jokio lyginamojo elemento, „C ++“ eilutėms naudojo numatytąjį „Comparator“.

Naudojant while ciklą su stp :: map

Mes taip pat galime naudoti ciklo ciklą, o ne ciklą.



<dėl>
#įtraukti
#įtraukti
#įtraukti
#įtraukti>
naudojant vardų sritisvalandų;
tarptpagrindinis() {
// Inicijuoti žemėlapį
žemėlapis<eilutė, styga>countryCapitalMap;
// Įterpti skirtingus elementus į žemėlapį
countryCapitalMap.Įdėti(pora<eilutė, styga>('Indija',„Delis“));
countryCapitalMap.Įdėti(pora<eilutė, styga>(„Nepalas“,„Katmandu“));
countryCapitalMap.Įdėti(pora<eilutė, styga>('Kinija','Pekinas'));
countryCapitalMap.Įdėti(pora<eilutė, styga>('Prancūzija','Paryžius'));


// Sukurkite žemėlapio kartotuvą ir pradėkite nuo pradžios
automatinisitr=countryCapitalMap.pradėti();
// Pakartokite naudodami iteratorių ciklo metu
tuo tarpu (itr!=countryCapitalMap.galas())
{
valandų::kaina <<itr->Pirmas// Prieigos raktas
<< ':'
<<itr->antra// Prieigos vertė
<<valandų::endl;
itr++;
}
grįžti 0;
}
</dėl>
Išvestis:
<dėl>
Kinija:Pekinas
Prancūzija:Paryžius
Indija:Delis
Nepalas:Katmandu
</dėl>

Naudojant diapazoną pagal kilpą (nuo C ++ 11 versijos)

Jei naudojate C ++ 11 versiją, tai yra pats elegantiškiausias būdas kartoti žemėlapį C ++. Galite išvengti tradicinių kuprinių kilpų ir vietoj to naudoti.

<dėl>
#įtraukti
#įtraukti
#įtraukti

naudojant vardų sritisvalandų;
tarptpagrindinis() {
// Inicijuoti žemėlapį
žemėlapis<eilutė, styga>countryCapitalMap;
// Įterpti skirtingus elementus į žemėlapį
countryCapitalMap.Įdėti(pora<eilutė, styga>('Indija',„Delis“));
countryCapitalMap.Įdėti(pora<eilutė, styga>(„Nepalas“,„Katmandu“));
countryCapitalMap.Įdėti(pora<eilutė, styga>('Kinija','Pekinas'));
countryCapitalMap.Įdėti(pora<eilutė, styga>('Prancūzija','Paryžius'));


// Pakartokite naudodami iteratorį ciklui
dėl (konst automatinis &jis:countryCapitalMap) {
kaina <<jis.Pirmas << ':' <<jis.antra<<' n';
}

grįžti 0;
}
</dėl>
Išvestis:
Kinija:Pekinas
Prancūzija:Paryžius
Indija:Delis
Nepalas:Katmandu

Diapazono pagrindo naudojimas ciklui su raktinių verčių poromis (nuo C ++ 17 versijos)

Ši versija palaikoma nuo c ++ 17 ir suteikia lankstesnį būdą kartoti žemėlapį. Žemėlapyje galite aiškiai pasiekti raktinių verčių porą, kuri suteikia dar labiau skaitomą sprendimą.

<dėl>
#įtraukti
#įtraukti
#įtraukti

naudojant vardų sritisvalandų;
tarptpagrindinis() {
// Inicijuoti žemėlapį
žemėlapis<eilutė, styga>countryCapitalMap;
// Įterpti skirtingus elementus į žemėlapį
countryCapitalMap.Įdėti(pora<eilutė, styga>('Indija',„Delis“));
countryCapitalMap.Įdėti(pora<eilutė, styga>(„Nepalas“,„Katmandu“));
countryCapitalMap.Įdėti(pora<eilutė, styga>('Kinija','Pekinas'));
countryCapitalMap.Įdėti(pora<eilutė, styga>('Prancūzija','Paryžius'));


// Pakartokite naudodami iteratorį ciklui
dėl (konst automatinis& [raktas, vertė] :countryCapitalMap) {
kaina <<Raktas<< ':' <<vertės<< ' n';
}

grįžti 0;
}
</dėl>
Išvestis:
Kinija:Pekinas
Prancūzija:Paryžius
Indija:Delis
Nepalas:Katmandu

Tai viskas apie tai, kaip kartoti žemėlapį naudojant C ++. Laimingo kodavimo!