Ako iterovať po mape v C ++

How Iterate Over Map C



V tomto rýchlom návode uvidíme, ako iterovať v mape v C ++.

V C ++ existuje niekoľko spôsobov, ako iterovať po mape. S novšími verziami C ++ existujú pokročilejšie spôsoby iterácie cez mapu v C ++.







Prejdime si každý po jednom.



Použitie pre slučku so stp :: map

Vytvorili sme mapu s názvom | _+_ | a vložil doň páry kľúč-hodnota.



<pre>
#zahrnúť
#zahrnúť
#zahrnúť
#zahrnúť
#zahrnúť
použitím priestor mienhodiny;
intHlavná() {
// Inicializácia mapy
mapu>„India“,„Dillí“));
countryCapitalMap.vložiť(pár<reťazec, reťazec>(„Nepál“,Káthmandu));
countryCapitalMap.vložiť(pár<reťazec, reťazec>('Čína',„Peking“));
countryCapitalMap.vložiť(pár<reťazec, reťazec>('Francúzsko',„Paríž“));

// Opakujte pomocou iterátora v cykle for
pre (autoitr=countryCapitalMap.začať();itr!=countryCapitalMap.koniec();itr++)
{
hodiny::náklady <<itr->najprv// Prístupový kľúč
<< ':'
<<itr->druhý// Prístupová hodnota
<<hodiny::endl;
}
vrátiť sa 0;
}
</pre>
Výkon:
<pre>
Čína:Peking
Francúzsko:Paríž
India:Dillí
Nepál:Káthmandu
</pre>

Ako vidíte, krajinu: kapitál (kľúč: hodnota) sme vytlačili pomocou cyklu for.





Ak si všimnete, použili sme | _+_ | špecifikátor typu iterátora máp kvôli čitateľnosti. Môžete použiť | _+_ | aj vyslovene.
Poznámka: Ak vidíte výstup, je zoradený vzostupne podľa kľúčov. Dôvodom je, že std :: map je triedený asociatívny kontajner s dodávaným komparátorom (verzia C ++ 11 a novšia). Pretože sme neposkytli žiadny komparátor, C ++ použilo pre reťazec predvolený komparátor.

Použitie cyklu while so stp :: map

Namiesto cyklu for môžeme tiež použiť cyklus while.



<pre>
#zahrnúť
#zahrnúť
#zahrnúť
#include>
použitím priestor mienhodiny;
intHlavná() {
// Inicializácia mapy
mapu<reťazec, reťazec>countryCapitalMap;
// Vložte do mapy rôzne prvky
countryCapitalMap.vložiť(pár<reťazec, reťazec>(„India“,„Dillí“));
countryCapitalMap.vložiť(pár<reťazec, reťazec>(„Nepál“,Káthmandu));
countryCapitalMap.vložiť(pár<reťazec, reťazec>('Čína',„Peking“));
countryCapitalMap.vložiť(pár<reťazec, reťazec>('Francúzsko',„Paríž“));


// Vytvorte iterátor mapy a inicializujte ju začatím
autoitr=countryCapitalMap.začať();
// Opakujte pomocou iterátora v cyklu while
kým (itr!=countryCapitalMap.koniec())
{
hodiny::náklady <<itr->najprv// Prístupový kľúč
<< ':'
<<itr->druhý// Prístupová hodnota
<<hodiny::endl;
itr++;
}
vrátiť sa 0;
}
</pre>
Výkon:
<pre>
Čína:Peking
Francúzsko:Paríž
India:Dillí
Nepál:Káthmandu
</pre>

Použitie cyklu založeného na cykle for (verzia C ++ 11 a novšia)

Ak používate verziu C ++ 11, je to najelegantnejší spôsob, ako iterovať mapu v C ++. Môžete sa vyhnúť tradičným kubánskym slučkám a použiť ich namiesto toho.

<pre>
#zahrnúť
#zahrnúť
#zahrnúť

použitím priestor mienhodiny;
intHlavná() {
// Inicializácia mapy
mapu<reťazec, reťazec>countryCapitalMap;
// Vložte do mapy rôzne prvky
countryCapitalMap.vložiť(pár<reťazec, reťazec>(„India“,„Dillí“));
countryCapitalMap.vložiť(pár<reťazec, reťazec>(„Nepál“,Káthmandu));
countryCapitalMap.vložiť(pár<reťazec, reťazec>('Čína',„Peking“));
countryCapitalMap.vložiť(pár<reťazec, reťazec>('Francúzsko',„Paríž“));


// Opakujte pomocou iterátora v cykle for
pre (konšt auto &on:countryCapitalMap) {
náklady <<on.najprv << ':' <<on.druhý<<' n';
}

vrátiť sa 0;
}
</pre>
Výkon:
Čína:Peking
Francúzsko:Paríž
India:Dillí
Nepál:Káthmandu

Použitie cyklu pre smyčku založenú na rozsahu s pármi kľúč-hodnota (verzia C ++ 17 a novšia)

Táto verzia je podporovaná od c ++ 17 a poskytuje flexibilnejší spôsob iterácie po mape. V mape môžete explicitne pristupovať k páru kľúč-hodnota, čo poskytuje ešte čitateľnejšie riešenie.

<pre>
#zahrnúť
#zahrnúť
#zahrnúť

použitím priestor mienhodiny;
intHlavná() {
// Inicializácia mapy
mapu<reťazec, reťazec>countryCapitalMap;
// Vloženie rôznych prvkov do mapy
countryCapitalMap.vložiť(pár<reťazec, reťazec>(„India“,„Dillí“));
countryCapitalMap.vložiť(pár<reťazec, reťazec>(„Nepál“,Káthmandu));
countryCapitalMap.vložiť(pár<reťazec, reťazec>('Čína',„Peking“));
countryCapitalMap.vložiť(pár<reťazec, reťazec>('Francúzsko',„Paríž“));


// Opakujte pomocou iterátora v cykle for
pre (konšt auto& [kľúč, hodnota] :countryCapitalMap) {
náklady <<kľúč<< ':' <<hodnotu<< ' n';
}

vrátiť sa 0;
}
</pre>
Výkon:
Čína:Peking
Francúzsko:Paríž
India:Dillí
Nepál:Káthmandu

To je všetko o tom, ako iterovať po mape v C ++. Šťastné kódovanie!