Hogyan lehet iterálni a térképen C ++ nyelven

How Iterate Over Map C



Ebben a gyors bemutatóban látni fogjuk, hogyan lehet iterálni a térképen C ++ nyelven.

A térképen többféleképpen lehet iterálni a C ++ nyelven. A C ++ újabb verzióival a fejlettebb módszerek a térképen való iterálásra a C ++ nyelven.







Nézzük végig egyenként.



Használata ciklushoz az stp :: map segítségével

Készítettünk egy térképet | _+_ | és kulcs-érték párokat illesztett hozzá.



<számára>
#befoglalni
#befoglalni
#befoglalni
#befoglalni
#befoglalni
segítségével névtérórák;
intfő-() {
// Térkép inicializálása
térkép>'India','Delhi'));
countryCapitalMap.betét(pár<húr, húr>('Nepál','Katmandu'));
countryCapitalMap.betét(pár<húr, húr>('Kína','Peking'));
countryCapitalMap.betét(pár<húr, húr>('Franciaország','Párizs'));

// Ismételje meg a ciklus iterátorával
számára (autoitr=countryCapitalMap.kezdődik();itr!=countryCapitalMap.vége();itr++)
{
órák::költség <<itr->első// Hozzáférési kulcs
<< ':'
<<itr->második// Hozzáférési érték
<<órák::endl;
}
Visszatérés 0;
}
</számára>
Kimenet:
<számára>
Kína:Peking
Franciaország:Párizs
India:Delhi
Nepál:Katmandu
</számára>

Amint láthatja, az ország: főváros (kulcs: érték) értékét kinyomtattuk a ciklushoz.





Ha észreveszi, használtuk a | _+_ | típus -specifikátor a térképi iterátor számára az olvashatóság miatt. Használhatja a | _+_ | kifejezetten is.
Jegyzet: Ha látja a kimenetet, akkor azt kulcsok szerint növekvő sorrendben rendezi. Ez azért van, mert az std :: map egy rendezett asszociatív tároló a mellékelt összehasonlítóval (C ++ 11 -es verzió). Mivel nem adtunk meg összehasonlítót, a C ++ az alapértelmezett összehasonlítót használta a karakterlánchoz.

A while ciklus használata az stp :: map segítségével

A ciklus helyett használhatunk egy while ciklust is.



<számára>
#befoglalni
#befoglalni
#befoglalni
#befoglalni>
segítségével névtérórák;
intfő-() {
// Térkép inicializálása
térkép<húr, húr>countryCapitalMap;
// Különböző elemek beszúrása a térképbe
countryCapitalMap.betét(pár<húr, húr>('India','Delhi'));
countryCapitalMap.betét(pár<húr, húr>('Nepál','Katmandu'));
countryCapitalMap.betét(pár<húr, húr>('Kína','Peking'));
countryCapitalMap.betét(pár<húr, húr>('Franciaország','Párizs'));


// Hozzon létre egy iterátort a térképhez, és inicializálja a következővel
autoitr=countryCapitalMap.kezdődik();
// Ismételje meg iterator használatával ciklus közben
míg (itr!=countryCapitalMap.vége())
{
órák::költség <<itr->első// Hozzáférési kulcs
<< ':'
<<itr->második// Hozzáférési érték
<<órák::endl;
itr++;
}
Visszatérés 0;
}
</számára>
Kimenet:
<számára>
Kína:Peking
Franciaország:Párizs
India:Delhi
Nepál:Katmandu
</számára>

A tartomány használata hurok alapján (C ++ 11 -es verzió)

Ha C ++ 11 verziót használ, akkor ez a legelegánsabb módja annak, hogy a térképen a C ++ nyelven ismétlődjön. Elkerülheti a hagyományos köbös köröket, és ezt használhatja.

<számára>
#befoglalni
#befoglalni
#befoglalni

segítségével névtérórák;
intfő-() {
// Térkép inicializálása
térkép<húr, húr>countryCapitalMap;
// Különböző elemek beszúrása a térképbe
countryCapitalMap.betét(pár<húr, húr>('India','Delhi'));
countryCapitalMap.betét(pár<húr, húr>('Nepál','Katmandu'));
countryCapitalMap.betét(pár<húr, húr>('Kína','Peking'));
countryCapitalMap.betét(pár<húr, húr>('Franciaország','Párizs'));


// Ismételje meg a ciklus iterátorával
számára (const auto &ő:countryCapitalMap) {
költség <<ő.első << ':' <<ő.második<<' n';
}

Visszatérés 0;
}
</számára>
Kimenet:
Kína:Peking
Franciaország:Párizs
India:Delhi
Nepál:Katmandu

Tartományalapú használata ciklushoz kulcsérték párokkal (C ++ 17-es verzió)

Ez a verzió a c ++ 17 -től támogatott, és rugalmasabb módot kínál a térképen való iterálásra. Kifejezetten hozzáférhet a kulcs-érték párhoz a térképen, amely még olvashatóbb megoldást nyújt.

<számára>
#befoglalni
#befoglalni
#befoglalni

segítségével névtérórák;
intfő-() {
// Térkép inicializálása
térkép<húr, húr>countryCapitalMap;
// Különböző elemek beszúrása a térképbe
countryCapitalMap.betét(pár<húr, húr>('India','Delhi'));
countryCapitalMap.betét(pár<húr, húr>('Nepál','Katmandu'));
countryCapitalMap.betét(pár<húr, húr>('Kína','Peking'));
countryCapitalMap.betét(pár<húr, húr>('Franciaország','Párizs'));


// Ismételje meg a ciklus iterátorával
számára (const auto& [kulcs érték] :countryCapitalMap) {
költség <<kulcs<< ':' <<érték<< ' n';
}

Visszatérés 0;
}
</számára>
Kimenet:
Kína:Peking
Franciaország:Párizs
India:Delhi
Nepál:Katmandu

Ez csak arról szól, hogyan lehet iterálni a térképen a C ++ nyelven. Boldog kódolást!