Comment itérer sur la carte en C++

How Iterate Over Map C



Dans ce rapide tutoriel, nous allons voir comment itérer sur map en C++.

Il existe plusieurs façons d'itérer sur la carte en C++. Avec les nouvelles versions de C++, il existe des moyens plus avancés d'itérer sur la carte en C++.







Passons en revue chacun un par un.



Utilisation de la boucle for avec stp::map

Nous avons créé une carte nommée |_+_| et y a inséré des paires clé-valeur.



<pour>
#comprendre
#comprendre
#comprendre
#comprendre
#comprendre
à l'aide de espace de nomsles heures;
entierprincipale() {
// Initialiser une carte
carte>'Inde','Delhi'));
paysCapitalMap.insérer(paire<chaîne, chaîne>('Népal','Katmandou'));
paysCapitalMap.insérer(paire<chaîne, chaîne>('Chine','Pékin'));
paysCapitalMap.insérer(paire<chaîne, chaîne>('La France','Paris'));

// Itérer en utilisant l'itérateur dans la boucle for
pour (autoitr=paysCapitalMap.commencer();itr!=paysCapitalMap.finir();itr++)
{
les heures::cout <<itr->premier// Clé d'accès
<< ':'
<<itr->seconde// Valeur d'accès
<<les heures::fin;
}
revenir 0;
}
</pour>
Sortir:
<pour>
Chine:Pékin
La France:Paris
Inde:Delhi
Népal:Katmandou
</pour>

Comme vous pouvez le voir, nous avons imprimé country:capital(key:value) en utilisant la boucle for.





Si vous remarquez, nous avons utilisé |_+_| spécificateur de type pour l'itérateur de carte en raison de la lisibilité. Vous pouvez utiliser |_+_| explicitement aussi.
Noter: Si vous voyez la sortie, elle est triée par clés dans l'ordre croissant. En effet, std::map est un conteneur associatif trié avec le comparateur fourni (à partir de la version C++11). Comme nous n'avons fourni aucun comparateur, C++ a donc utilisé le comparateur par défaut pour la chaîne.

Utilisation de la boucle while avec stp::map

Nous pouvons également utiliser une boucle while au lieu d'une boucle for.



<pour>
#comprendre
#comprendre
#comprendre
#inclure >
à l'aide de espace de nomsles heures;
entierprincipale() {
// Initialiser une carte
carte<chaîne, chaîne>paysCapitalCarte;
// Insérer différents éléments dans la carte
paysCapitalMap.insérer(paire<chaîne, chaîne>('Inde','Delhi'));
paysCapitalMap.insérer(paire<chaîne, chaîne>('Népal','Katmandou'));
paysCapitalMap.insérer(paire<chaîne, chaîne>('Chine','Pékin'));
paysCapitalMap.insérer(paire<chaîne, chaîne>('La France','Paris'));


// Créer un itérateur pour la carte et initialiser avec begin
autoitr=paysCapitalMap.commencer();
// Itérer en utilisant l'itérateur dans la boucle while
tandis que (itr!=paysCapitalMap.finir())
{
les heures::cout <<itr->premier// Clé d'accès
<< ':'
<<itr->seconde// Valeur d'accès
<<les heures::fin;
itr++;
}
revenir 0;
}
</pour>
Sortir:
<pour>
Chine:Pékin
La France:Paris
Inde:Delhi
Népal:Katmandou
</pour>

Utilisation de la boucle for Range (à partir de la version C++11)

Si vous utilisez la version C++11, c'est le moyen le plus élégant d'itérer sur la carte en C++. Vous pouvez éviter les boucles cubiques traditionnelles et les utiliser à la place.

<pour>
#comprendre
#comprendre
#comprendre

à l'aide de espace de nomsles heures;
entierprincipale() {
// Initialiser une carte
carte<chaîne, chaîne>paysCapitalCarte;
// Insérer différents éléments dans la carte
paysCapitalMap.insérer(paire<chaîne, chaîne>('Inde','Delhi'));
paysCapitalMap.insérer(paire<chaîne, chaîne>('Népal','Katmandou'));
paysCapitalMap.insérer(paire<chaîne, chaîne>('Chine','Pékin'));
paysCapitalMap.insérer(paire<chaîne, chaîne>('La France','Paris'));


// Itérer en utilisant l'itérateur dans la boucle for
pour (const auto &il:paysCapitalCarte) {
cout <<il.premier << ':' <<il.seconde<<' ';
}

revenir 0;
}
</pour>
Sortir:
Chine:Pékin
La France:Paris
Inde:Delhi
Népal:Katmandou

Utilisation d'une boucle for basée sur une plage avec des paires clé-valeur (version C++17 et suivantes)

Cette version est prise en charge à partir de c++17 et offre un moyen plus flexible d'itérer sur la carte. Vous pouvez accéder explicitement à la paire clé-valeur dans la carte, ce qui fournit une solution encore plus lisible.

<pour>
#comprendre
#comprendre
#comprendre

à l'aide de espace de nomsles heures;
entierprincipale() {
// Initialiser une carte
carte<chaîne, chaîne>paysCapitalCarte;
// Insérer différents éléments dans la carte
paysCapitalMap.insérer(paire<chaîne, chaîne>('Inde','Delhi'));
paysCapitalMap.insérer(paire<chaîne, chaîne>('Népal','Katmandou'));
paysCapitalMap.insérer(paire<chaîne, chaîne>('Chine','Pékin'));
paysCapitalMap.insérer(paire<chaîne, chaîne>('La France','Paris'));


// Itérer en utilisant l'itérateur dans la boucle for
pour (const auto& [valeur clé] :paysCapitalCarte) {
cout <<clé<< ':' <<valeur<< ' ';
}

revenir 0;
}
</pour>
Sortir:
Chine:Pékin
La France:Paris
Inde:Delhi
Népal:Katmandou

C'est tout sur la façon d'itérer sur la carte en C++. Bon codage !