Paano umulit sa mapa sa C ++

How Iterate Over Map C



Sa mabilis na tutorial na ito, makikita natin kung paano umulit sa mapa sa C ++.

Mayroong maraming mga paraan upang umulit sa mapa sa C ++. Sa mga mas bagong bersyon ng C ++, maraming mga advanced na paraan upang umulit sa mapa sa C ++.







Dumaan tayo sa bawat isa.



Paggamit para sa loop na may stp :: mapa

Lumikha kami ng isang mapa na pinangalanang countryCapitalMap at ipinasok dito ang mga pares ng key-value.



<para sa>
# isama
# isama
# isama
# isama
# isama
gamit namespaceoras;
intpangunahing() {
// Initialize a map
mapa>'India','Delhi'));
countryCapitalMap.ipasok(pares<string, string>('Nepal','Kathmandu'));
countryCapitalMap.ipasok(pares<string, string>('Tsina','Beijing'));
countryCapitalMap.ipasok(pares<string, string>('France','Paris'));

// Iterate using iterator in for loop
para sa (awtomatikoitr=countryCapitalMap.magsimula();itr!=countryCapitalMap.magtapos();itr++)
{
oras::gastos <<itr->una// Access key
<< ':'
<<itr->pangalawa// Halaga ng pag-access
<<oras::endl;
}
bumalik ka 0;
}
</para sa>
Paglabas:
<para sa>
Tsina:Beijing
France:Paris
India:Delhi
Nepal:Kathmandu
</para sa>

Tulad ng nakikita mo, mayroon kaming naka-print na bansa: kapital (key: halaga) na ginagamit para sa loop.





Kung napansin mo, ginamit namin ang auto i-type ang specifier para sa map iterator dahil sa kakayahang mabasa. Maaari mong gamitin ang map::iterator malinaw na rin.
Tandaan: Kung nakikita mo ang output, ito ay pinagsunod-sunod sa pamamagitan ng mga key sa pataas na pagkakasunud-sunod. Ito ay dahil ang std :: mapa ay isang pinagsunod-sunod na container ng nauugnay na may ibinigay na Comparator (bersyon C ++ 11 pataas). Dahil hindi kami nagbigay ng anumang kumpare, kaya ginamit ng C ++ ang default na Maghahambing para sa string.

Paggamit habang loop na may stp :: mapa

Maaari din kaming gumamit ng isang habang loop sa halip na para sa loop.



<para sa>
# isama
# isama
# isama
# isama>
gamit namespaceoras;
intpangunahing() {
// Initialize a map
mapa<string, string>countryCapitalMap;
// Ipasok ang iba't ibang mga elemento sa mapa
countryCapitalMap.ipasok(pares<string, string>('India','Delhi'));
countryCapitalMap.ipasok(pares<string, string>('Nepal','Kathmandu'));
countryCapitalMap.ipasok(pares<string, string>('Tsina','Beijing'));
countryCapitalMap.ipasok(pares<string, string>('France','Paris'));


// Lumikha ng isang iterator para sa mapa at ipasimula sa simula
awtomatikoitr=countryCapitalMap.magsimula();
// Iterate using iterator in habang loop
habang (itr!=countryCapitalMap.magtapos())
{
oras::gastos <<itr->una// Access key
<< ':'
<<itr->pangalawa// Halaga ng pag-access
<<oras::endl;
itr++;
}
bumalik ka 0;
}
</para sa>
Paglabas:
<para sa>
Tsina:Beijing
France:Paris
India:Delhi
Nepal:Kathmandu
</para sa>

Paggamit ng Saklaw na batay para sa loop (C ++ 11 bersyon pataas)

Kung gumagamit ka ng bersyon ng C ++ 11, kung gayon ito ang pinaka matikas na paraan upang umulit sa mapa sa C ++. Maaari mong maiwasan ang tradisyonal na cubersome loop at gamitin ito sa halip.

<para sa>
# isama
# isama
# isama

gamit namespaceoras;
intpangunahing() {
// Initialize a map
mapa<string, string>countryCapitalMap;
// Ipasok ang iba't ibang mga elemento sa mapa
countryCapitalMap.ipasok(pares<string, string>('India','Delhi'));
countryCapitalMap.ipasok(pares<string, string>('Nepal','Kathmandu'));
countryCapitalMap.ipasok(pares<string, string>('Tsina','Beijing'));
countryCapitalMap.ipasok(pares<string, string>('France','Paris'));


// Iterate using iterator in for loop
para sa (Const awtomatiko &siya:countryCapitalMap) {
gastos <<siya.una << ':' <<siya.pangalawa<<' n';
}

bumalik ka 0;
}
</para sa>
Paglabas:
Tsina:Beijing
France:Paris
India:Delhi
Nepal:Kathmandu

Paggamit ng range-based para sa loop na may mga pares na key-halaga (C ++ 17 na bersyon pataas)

Ang bersyon na ito ay suportado mula c ++ 17 pataas at nagbibigay ng isang mas nababaluktot na paraan para sa pag-ulit sa mapa. Malinaw mong ma-access ang pares ng mga key-value sa mapa na nagbibigay ng higit na nababasa na solusyon.

<para sa>
# isama
# isama
# isama

gamit namespaceoras;
intpangunahing() {
// Initialize a map
mapa<string, string>countryCapitalMap;
// Ipasok ang iba't ibang mga elemento sa mapa
countryCapitalMap.ipasok(pares<string, string>('India','Delhi'));
countryCapitalMap.ipasok(pares<string, string>('Nepal','Kathmandu'));
countryCapitalMap.ipasok(pares<string, string>('Tsina','Beijing'));
countryCapitalMap.ipasok(pares<string, string>('France','Paris'));


// Iterate using iterator in for loop
para sa (Const awtomatiko& [susi, halaga] :countryCapitalMap) {
gastos <<susi<< ':' <<halaga<< ' n';
}

bumalik ka 0;
}
</para sa>
Paglabas:
Tsina:Beijing
France:Paris
India:Delhi
Nepal:Kathmandu

Iyon lang ang tungkol sa kung paano umulit sa mapa sa C ++. Maligayang pag-coding!