Kā atkārtot karti C ++

How Iterate Over Map C



Šajā ātrajā apmācībā mēs redzēsim, kā atkārtot kartē C ++.

Ir vairāki veidi, kā atkārtot karti C ++. Izmantojot jaunākas C ++ versijas, ir uzlaboti veidi, kā atkārtot karti C ++.







Ejam cauri katram pa vienam.



Izmantojot cilpai ar stp :: map

Mēs esam izveidojuši karti ar nosaukumu | _+_ | un ievietojis tajā atslēgu vērtību pārus.



<priekš>
#iekļaut
#iekļaut
#iekļaut
#iekļaut
#iekļaut
izmantojot vārda telpastundas;
intgalvenais() {
// Inicializēt karti
karte>'Indija','Deli'));
countryCapitalMap.ielikt(pāri<stīga, stīga>('Nepāla','Katmandu'));
countryCapitalMap.ielikt(pāri<stīga, stīga>('Ķīna','Pekina'));
countryCapitalMap.ielikt(pāri<stīga, stīga>('Francija','Parīze'));

// Atkārtojiet, izmantojot iteratoru cilpai
priekš (autoitr=countryCapitalMap.sākt();itr!=countryCapitalMap.beigas();itr++)
{
stundas::izmaksas <<itr->pirmais// Piekļuves atslēga
<< ':'
<<itr->otrais// Piekļuves vērtība
<<stundas::endl;
}
atgriezties 0;
}
</priekš>
Izeja:
<priekš>
Ķīna:Pekina
Francija:Parīze
Indija:Deli
Nepāla:Katmandu
</priekš>

Kā redzat, mēs esam iespieduši valsti: kapitāls (atslēga: vērtība), izmantojot cilpu.





Ja pamanāt, mēs izmantojām | _+_ | tipa iterētājs karšu iteratoram lasāmības dēļ. Varat izmantot | _+_ | arī skaidri.
Piezīme: Ja redzat izvadi, tas ir sakārtots pēc taustiņiem augošā secībā. Tas ir tāpēc, ka std :: map ir sakārtots asociatīvs konteiners ar komplektā iekļauto Comparator (versija C ++ 11 un turpmāk). Tā kā mēs nesniedzām nekādu salīdzinātāju, C ++ virknei ir izmantojis noklusējuma salīdzinātāju.

Izmantojot ciklu ar stp :: map

Cilpas vietā mēs varam izmantot arī cikla ciklu.



<priekš>
#iekļaut
#iekļaut
#iekļaut
#iekļaut>
izmantojot vārda telpastundas;
intgalvenais() {
// Inicializēt karti
karte<stīga, stīga>countryCapitalMap;
// Ievietojiet kartē dažādus elementus
countryCapitalMap.ielikt(pāri<stīga, stīga>('Indija','Deli'));
countryCapitalMap.ielikt(pāri<stīga, stīga>('Nepāla','Katmandu'));
countryCapitalMap.ielikt(pāri<stīga, stīga>('Ķīna','Pekina'));
countryCapitalMap.ielikt(pāri<stīga, stīga>('Francija','Parīze'));


// Izveidojiet kartei iteratoru un inicializējiet ar sākt
autoitr=countryCapitalMap.sākt();
// Atkārtojiet, izmantojot iteratoru cikla laikā
kamēr (itr!=countryCapitalMap.beigas())
{
stundas::izmaksas <<itr->pirmais// Piekļuves atslēga
<< ':'
<<itr->otrais// Piekļuves vērtība
<<stundas::endl;
itr++;
}
atgriezties 0;
}
</priekš>
Izeja:
<priekš>
Ķīna:Pekina
Francija:Parīze
Indija:Deli
Nepāla:Katmandu
</priekš>

Izmantojot diapazonu, pamatojoties uz cilpu (sākot no C ++ 11 versijas)

Ja jūs izmantojat C ++ 11 versiju, tad tas ir elegantākais veids, kā atkārtot karti C ++. Jūs varat izvairīties no tradicionālajām cilpām un izmantot to vietā.

<priekš>
#iekļaut
#iekļaut
#iekļaut

izmantojot vārda telpastundas;
intgalvenais() {
// Inicializēt karti
karte<stīga, stīga>countryCapitalMap;
// Ievietojiet kartē dažādus elementus
countryCapitalMap.ielikt(pāri<stīga, stīga>('Indija','Deli'));
countryCapitalMap.ielikt(pāri<stīga, stīga>('Nepāla','Katmandu'));
countryCapitalMap.ielikt(pāri<stīga, stīga>('Ķīna','Pekina'));
countryCapitalMap.ielikt(pāri<stīga, stīga>('Francija','Parīze'));


// Atkārtojiet, izmantojot iteratoru cilpai
priekš (konst auto &viņš:countryCapitalMap) {
izmaksas <<viņš.pirmais << ':' <<viņš.otrais<<' n';
}

atgriezties 0;
}
</priekš>
Izeja:
Ķīna:Pekina
Francija:Parīze
Indija:Deli
Nepāla:Katmandu

Izmantojot diapazonu, izmantojot cilpu ar atslēgu vērtību pāriem (sākot no C ++ 17 versijas)

Šī versija tiek atbalstīta no c ++ 17 un nodrošina elastīgāku veidu, kā atkārtot karti. Jūs varat skaidri piekļūt atslēgu vērtību pārim kartē, kas nodrošina vēl lasāmāku risinājumu.

<priekš>
#iekļaut
#iekļaut
#iekļaut

izmantojot vārda telpastundas;
intgalvenais() {
// Inicializēt karti
karte<stīga, stīga>countryCapitalMap;
// Ievietojiet kartē dažādus elementus
countryCapitalMap.ielikt(pāri<stīga, stīga>('Indija','Deli'));
countryCapitalMap.ielikt(pāri<stīga, stīga>('Nepāla','Katmandu'));
countryCapitalMap.ielikt(pāri<stīga, stīga>('Ķīna','Pekina'));
countryCapitalMap.ielikt(pāri<stīga, stīga>('Francija','Parīze'));


// Atkārtojiet, izmantojot iteratoru cilpai
priekš (konst auto& [atslēga, vērtība] :countryCapitalMap) {
izmaksas <<taustiņu<< ':' <<vērtību<< ' n';
}

atgriezties 0;
}
</priekš>
Izeja:
Ķīna:Pekina
Francija:Parīze
Indija:Deli
Nepāla:Katmandu

Tas viss ir par to, kā atkārtot karti C ++. Laimīgu kodēšanu!