Comment itérer sur la carte en C ++

Comment itérer sur la carte en C ++
Dans ce tutoriel rapide, nous verrons comment itérer sur la carte en C++. Il existe plusieurs façons d'itérer sur la carte en C++. Avec des versions plus récentes de C ++, il existe des moyens plus avancés d'itérer sur la carte en C++. Passons chacun par un.

Utilisation pour Loop avec STD :: Map

Nous avons créé une carte nommée countrycapitalmap et les paires de valeurs clés insérées. Nous utilisons ensuite un itérateur pour faire une boucle pour les membres de la structure des données de la carte.

#inclure
#inclure
#inclure
#inclure
Utilisation de Namespace Std;
int main()
// initialiser une carte
carteCountryCapitalMap;
countrycapitalmap.insérer (paire("Népal", "Katmandou"));
countrycapitalmap.insérer (paire("Chine", "Pékin"));
countrycapitalmap.insérer (paire("France", "Paris"));
// itérer en utilisant Iterator pour Loop
for (Auto iTr = countrycapitalmap.commencer();
itr != CountryCapitalMap.fin(); itr ++)
std :: cout << itr->First // Clé d'accès
<< ':'
<< itr->deuxième // valeur d'accès
<< std::endl;

retour 0;
Sortir:
Chine: Pékin
France: Paris
Népal: Katmandou

Comme vous pouvez le voir, nous avons imprimé Country: Capital (clé: valeur) en utilisant pour Loop.

Si vous remarquez, nous avons utilisé auto Type spécificateur pour Map Iterator en raison de la lisibilité. Vous pouvez utiliser Carte :: Iterator explicitement aussi.
Note: Si vous voyez la sortie, elle est triée par des clés dans l'ordre croissant. En effet. Puisque nous n'avons fourni aucun comparateur, C ++ a donc utilisé le comparateur par défaut pour la chaîne.

Utilisation de boucle while avec STP :: Map

Nous pouvons également utiliser une boucle.

#inclure
#inclure
#inclure
#inclure
Utilisation de Namespace Std;
int main()
// initialiser une carte
carte CountryCapitalMap;
// insérer différents éléments dans la carte
countrycapitalmap.insérer (paire("Inde", "Delhi"));
countrycapitalmap.insérer (paire("Népal", "Katmandou"));
countrycapitalmap.insérer (paire("Chine", "Pékin"));
countrycapitalmap.insérer (paire("France", "Paris"));
// Créez un itérateur pour la carte et initialisez avec Begin
Auto ITR = countrycapitalmap.commencer();
// itérer en utilisant Iterator dans la boucle
tandis que (iTr!= CountryCapitalMap.fin())

std :: cout << itr->First // Clé d'accès
<< ':'
<< itr->deuxième // valeur d'accès
<< std::endl;
ITR ++;

retour 0;

Sortir:

Chine: Pékin
France: Paris
Inde: Delhi
Népal: Katmandou

Utilisation de la plage basée pour Loop (version C ++ 11)

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

#inclure
#inclure
#inclure
Utilisation de Namespace Std;
int main()
// initialiser une carte
carte CountryCapitalMap;
// insérer différents éléments dans la carte
countrycapitalmap.insérer (paire("Inde", "Delhi"));
countrycapitalmap.insérer (paire("Népal", "Katmandou"));
countrycapitalmap.insérer (paire("Chine", "Pékin"));
countrycapitalmap.insérer (paire("France", "Paris"));
// itérer en utilisant Iterator pour Loop
pour (const auto & ele: countrycapitalmap)
couter <
retour 0;
Sortir:
Chine: Pékin
France: Paris
Inde: Delhi
Népal: Katmandou

Utilisation de la plage basée sur la boucle avec des paires de valeurs clés (version C ++ 17)

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

#inclure
#inclure
#inclure
Utilisation de Namespace Std;
int main()
// initialiser une carte
carte CountryCapitalMap;
// insérer différents éléments dans la carte
countrycapitalmap.insérer (paire("Inde", "Delhi"));
countrycapitalmap.insérer (paire("Népal", "Katmandou"));
countrycapitalmap.insérer (paire("Chine", "Pékin"));
countrycapitalmap.insérer (paire("France", "Paris"));
// itérer en utilisant Iterator pour Loop
for (const auto & [key, valeur]: countrycapitalmap)
couter << key << ":" << value << "\n";

retour 0;
Sortir:
Chine: Pékin
France: Paris
Inde: Delhi
Népal: Katmandou

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