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 !