Jak iterovat přes mapu v C ++

How Iterate Over Map C

V tomto rychlém kurzu uvidíme, jak iterovat v mapě v C ++.

Existuje několik způsobů, jak iterovat přes mapu v C ++. S novějšími verzemi C ++ existují pokročilejší způsoby iterace přes mapu v C ++.



Pojďme si projít každý jeden po druhém.



Použití pro smyčku se stp :: map

Vytvořili jsme mapu s názvem | _+_ | a vložil do něj páry klíč – hodnota.



<pro>
#zahrnout
#zahrnout
#zahrnout
#zahrnout
#zahrnout
použitím jmenný prostorhodiny;
inthlavní() {
// Inicializace mapy
mapa>'Indie','Dillí'));
countryCapitalMap.vložit(pár<řetězec, řetězec>('Nepál','Kathmandu'));
countryCapitalMap.vložit(pár<řetězec, řetězec>('Čína','Peking'));
countryCapitalMap.vložit(pár<řetězec, řetězec>('Francie','Paříž'));

// Opakujte pomocí iterátoru ve smyčce for
pro (autoitr=countryCapitalMap.začít();itr!=countryCapitalMap.konec();itr++)
{
hodiny::náklady <<itr->za prvé// Přístupový klíč
<< ':'
<<itr->druhý// Přístupová hodnota
<<hodiny::endl;
}
vrátit se 0;
}
</pro>
Výstup:
<pro>
Čína:Peking
Francie:Paříž
Indie:Dillí
Nepál:Káthmándú
</pro>

Jak vidíte, vytiskli jsme zemi: kapitál (klíč: hodnota) pomocí smyčky for.

Pokud si všimnete, použili jsme | _+_ | specifikátor typu pro iterátor mapy kvůli čitelnosti. Můžete použít | _+_ | také výslovně.
Poznámka: Pokud vidíte výstup, je seřazen podle klíčů ve vzestupném pořadí. Důvodem je, že std :: map je seřazený asociativní kontejner s dodaným komparátorem (verze C ++ 11 a dále). Protože jsme neposkytli žádný komparátor, C ++ použilo pro řetězec výchozí komparátor.

Použití while smyčky s stp :: map

Místo smyčky for můžeme také použít while.



<pro>
#zahrnout
#zahrnout
#zahrnout
#include>
použitím jmenný prostorhodiny;
inthlavní() {
// Inicializace mapy
mapa<řetězec, řetězec>countryCapitalMap;
// Vložení různých prvků do mapy
countryCapitalMap.vložit(pár<řetězec, řetězec>('Indie','Dillí'));
countryCapitalMap.vložit(pár<řetězec, řetězec>('Nepál','Kathmandu'));
countryCapitalMap.vložit(pár<řetězec, řetězec>('Čína','Peking'));
countryCapitalMap.vložit(pár<řetězec, řetězec>('Francie','Paříž'));


// Vytvořte iterátor pro mapu a inicializujte s begin
autoitr=countryCapitalMap.začít();
// Opakujte pomocí iterátoru ve smyčce while
zatímco (itr!=countryCapitalMap.konec())
{
hodiny::náklady <<itr->za prvé// Přístupový klíč
<< ':'
<<itr->druhý// Přístupová hodnota
<<hodiny::endl;
itr++;
}
vrátit se 0;
}
</pro>
Výstup:
<pro>
Čína:Peking
Francie:Paříž
Indie:Dillí
Nepál:Káthmándú
</pro>

Použití rozsahu založeného na smyčce (verze C ++ 11 a novější)

Pokud používáte verzi C ++ 11, je to nejelegantnější způsob, jak iterovat mapu v C ++. Můžete se vyhnout tradičním kubánským smyčkám a místo toho je použít.

<pro>
#zahrnout
#zahrnout
#zahrnout

použitím jmenný prostorhodiny;
inthlavní() {
// Inicializace mapy
mapa<řetězec, řetězec>countryCapitalMap;
// Vložení různých prvků do mapy
countryCapitalMap.vložit(pár<řetězec, řetězec>('Indie','Dillí'));
countryCapitalMap.vložit(pár<řetězec, řetězec>('Nepál','Kathmandu'));
countryCapitalMap.vložit(pár<řetězec, řetězec>('Čína','Peking'));
countryCapitalMap.vložit(pár<řetězec, řetězec>('Francie','Paříž'));


// Opakujte pomocí iterátoru ve smyčce for
pro (konst auto &on:countryCapitalMap) {
náklady <<on.za prvé << ':' <<on.druhý<<' n';
}

vrátit se 0;
}
</pro>
Výstup:
Čína:Peking
Francie:Paříž
Indie:Dillí
Nepál:Káthmándú

Použití smyčky založené na rozsahu pro páry klíč – hodnota (verze C ++ 17 a novější)

Tato verze je podporována od c ++ 17 a poskytuje flexibilnější způsob iterace na mapě. K páru klíč – hodnota můžete explicitně přistupovat v mapě, což poskytuje ještě čitelnější řešení.

<pro>
#zahrnout
#zahrnout
#zahrnout

použitím jmenný prostorhodiny;
inthlavní() {
// Inicializace mapy
mapa<řetězec, řetězec>countryCapitalMap;
// Vložení různých prvků do mapy
countryCapitalMap.vložit(pár<řetězec, řetězec>('Indie','Dillí'));
countryCapitalMap.vložit(pár<řetězec, řetězec>('Nepál','Kathmandu'));
countryCapitalMap.vložit(pár<řetězec, řetězec>('Čína','Peking'));
countryCapitalMap.vložit(pár<řetězec, řetězec>('Francie','Paříž'));


// Opakujte pomocí iterátoru ve smyčce for
pro (konst auto& [klíč, hodnota] :countryCapitalMap) {
náklady <<klíč<< ':' <<hodnota<< ' n';
}

vrátit se 0;
}
</pro>
Výstup:
Čína:Peking
Francie:Paříž
Indie:Dillí
Nepál:Káthmándú

To je vše o tom, jak iterovat po mapě v C ++. Šťastné kódování!