Boucle for basée sur la plage en C++
-
Utilisez la boucle
for
basée sur une plage pour imprimer les éléments destd::map
en C++ -
Utiliser la boucle
for
basée sur une plage pour imprimer les membres destruct
en C++
Cet article présente plusieurs méthodes d’utilisation d’une boucle for
basée sur une plage en C++.
Utilisez la boucle for
basée sur une plage pour imprimer les éléments de std::map
en C++
La boucle for
basée sur une plage est un équivalent plus lisible de la boucle for
régulière. Il peut être utilisé pour parcourir le tableau ou tout autre objet qui a des fonctions membres begin
et end
. Notez que nous utilisons le mot-clé auto
et la référence à l’élément pour y accéder. Dans ce cas, item
fait référence à l’élément unique de std::map
, qui se trouve être de type std::pair
. Ainsi, l’accès aux paires clé-valeur nécessite une notation spéciale par points pour y accéder en utilisant les mots-clés first
/second
.
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
map<int, string> fruit_map = {{
1,
"Apple",
},
{
2,
"Banana",
},
{
3,
"Mango",
},
{
4,
"Cocoa",
}};
for (auto &item : fruit_map) {
cout << "[" << item.first << "," << item.second << "]\n";
}
return EXIT_SUCCESS;
}
Production:
[1,Apple]
[2,Banana]
[3,Mango]
[4,Cocoa]
Alternativement, une boucle basée sur une plage peut accéder aux éléments en utilisant une notation de liaison structurée et rendre le bloc de code plus concis. Dans l’exemple suivant, nous démontrons une telle utilisation de liaison pour accéder aux paires std::map
.
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
map<int, string> fruit_map = {{
1,
"Apple",
},
{
2,
"Banana",
},
{
3,
"Mango",
},
{
4,
"Cocoa",
}};
for (const auto& [key, val] : fruit_map) {
cout << "[" << key << "," << val << "]\n";
}
return EXIT_SUCCESS;
}
Production:
[1,Apple]
[2,Banana]
[3,Mango]
[4,Cocoa]
Utiliser la boucle for
basée sur une plage pour imprimer les membres de struct
en C++
La liaison structurée peut être extrêmement utile lorsque les éléments traversés représentent les structures relativement plus grandes avec plusieurs membres de données. Comme le montre l’exemple de code suivant, ces membres sont déclarés sous forme de liste d’identifiants puis référencés directement sans la notation struct.member
. Notez que la plupart des conteneurs STL sont traversables en utilisant la boucle for
basée sur la plage.
#include <iostream>
#include <list>
using std::cin;
using std::cout;
using std::endl;
using std::list;
using std::string;
struct Person {
string name;
string surname;
int age;
};
int main() {
list<Person> persons = {{"T", "M", 11},
{"R", "S", 23},
{"J", "R", 43},
{"A", "C", 60},
{"D", "C", 97}};
for (const auto& [n, s, age] : persons) {
cout << n << "." << s << " - " << age << " years old" << endl;
}
return EXIT_SUCCESS;
}
Production:
T.M - 11 years old
R.S - 23 years old
J.R - 43 years old
A.C - 60 years old
D.C - 97 years old
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook