Kako ponoviti kartu u C ++

How Iterate Over Map C



U ovom kratkom vodiču vidjet ćemo kako se ponavljati na karti u C ++.

Postoji više načina za ponavljanje karte u C ++. S novijim verzijama C ++, postoje napredniji načini za ponavljanje karte u C ++.







Prođimo svaki po jedan.



Korištenje for petlje sa stp :: map

Napravili smo kartu s imenom | _+_ | i u njega umetnuli parove ključ-vrijednost.



<za>
#uključi
#uključi
#uključi
#uključi
#uključi
koristeći imenski prostorsati;
intglavni() {
// Inicijalizacija karte
karta>'Indija','Delhi'));
countryCapitalMap.umetnuti(par<niz, niz>('Nepal','Katmandu'));
countryCapitalMap.umetnuti(par<niz, niz>('Kina','Peking'));
countryCapitalMap.umetnuti(par<niz, niz>('Francuska','Pariz'));

// Iteracija pomoću iteratora u for petlji
za (autoitr=countryCapitalMap.početi();itr!=countryCapitalMap.kraj();itr++)
{
sati::trošak <<itr->prvi// Pristupni ključ
<< ':'
<<itr->drugi// Pristupna vrijednost
<<sati::endl;
}
povratak 0;
}
</za>
Izlaz:
<za>
Kina:Peking
Francuska:Pariz
Indija:Delhi
Nepal:Katmandu
</za>

Kao što vidite, ispisali smo country: capital (key: value) pomoću for petlje.





Ako primijetite, koristili smo | _+_ | specifikator tipa za iterator karte zbog čitljivosti. Možete koristiti | _+_ | izričito također.
Bilješka: Ako vidite izlaz, sortiran je po ključevima u rastućem redoslijedu. To je zato što je std :: map sortirani asocijativni spremnik s isporučenim komparatorom (verzija C ++ 11 nadalje). Budući da nismo naveli usporedbu, pa je C ++ upotrijebio zadani usporednik za niz.

Korištenje while petlje sa stp :: map

Također možemo upotrijebiti while petlju umjesto for petlje.



<za>
#uključi
#uključi
#uključi
#uključi>
koristeći imenski prostorsati;
intglavni() {
// Inicijalizacija karte
karta<niz, niz>countryCapitalMap;
// Umetanje različitih elemenata u kartu
countryCapitalMap.umetnuti(par<niz, niz>('Indija','Delhi'));
countryCapitalMap.umetnuti(par<niz, niz>('Nepal','Katmandu'));
countryCapitalMap.umetnuti(par<niz, niz>('Kina','Peking'));
countryCapitalMap.umetnuti(par<niz, niz>('Francuska','Pariz'));


// Kreiramo iterator za kartu i Inicijaliziramo s begin
autoitr=countryCapitalMap.početi();
// Iteracija pomoću iteratora u while petlji
dok (itr!=countryCapitalMap.kraj())
{
sati::trošak <<itr->prvi// Pristupni ključ
<< ':'
<<itr->drugi// Pristupna vrijednost
<<sati::endl;
itr++;
}
povratak 0;
}
</za>
Izlaz:
<za>
Kina:Peking
Francuska:Pariz
Indija:Delhi
Nepal:Katmandu
</za>

Korištenje raspona zasnovanog na petlji (verzija od C ++ 11 nadalje)

Ako koristite verziju C ++ 11, ovo je najelegantniji način za ponavljanje karte u C ++. Možete izbjeći tradicionalne sitne petlje i upotrijebiti ovo umjesto toga.

<za>
#uključi
#uključi
#uključi

koristeći imenski prostorsati;
intglavni() {
// Inicijalizacija karte
karta<niz, niz>countryCapitalMap;
// Umetanje različitih elemenata u kartu
countryCapitalMap.umetnuti(par<niz, niz>('Indija','Delhi'));
countryCapitalMap.umetnuti(par<niz, niz>('Nepal','Katmandu'));
countryCapitalMap.umetnuti(par<niz, niz>('Kina','Peking'));
countryCapitalMap.umetnuti(par<niz, niz>('Francuska','Pariz'));


// Iteracija pomoću iteratora u for petlji
za (konst auto &on:countryCapitalMap) {
trošak <<on.prvi << ':' <<on.drugi<<' n';
}

povratak 0;
}
</za>
Izlaz:
Kina:Peking
Francuska:Pariz
Indija:Delhi
Nepal:Katmandu

Korištenje petlje na temelju raspona s parovima ključ / vrijednost (verzija C ++ 17 nadalje)

Ova verzija je podržana od c ++ 17 nadalje i pruža fleksibilniji način za ponavljanje po karti. U karti možete izričito pristupiti paru ključ-vrijednost koji pruža još čitljivije rješenje.

<za>
#uključi
#uključi
#uključi

koristeći imenski prostorsati;
intglavni() {
// Inicijalizacija karte
karta<niz, niz>countryCapitalMap;
// Umetanje različitih elemenata u kartu
countryCapitalMap.umetnuti(par<niz, niz>('Indija','Delhi'));
countryCapitalMap.umetnuti(par<niz, niz>('Nepal','Katmandu'));
countryCapitalMap.umetnuti(par<niz, niz>('Kina','Peking'));
countryCapitalMap.umetnuti(par<niz, niz>('Francuska','Pariz'));


// Iteracija pomoću iteratora u for petlji
za (konst auto& [ključ, vrijednost] :countryCapitalMap) {
trošak <<ključ<< ':' <<vrijednost<< ' n';
}

povratak 0;
}
</za>
Izlaz:
Kina:Peking
Francuska:Pariz
Indija:Delhi
Nepal:Katmandu

To je sve o tome kako ponoviti kartu u C ++. Sretno kodiranje!