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!