Utilisation pratique des boucles for basées sur la plage
Filtrage des éléments
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// Filtrer les nombres pairs
for (int num : numbers) {
if (num % 2 == 0) {
std::cout << num << " ";
}
}
return 0;
}
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
// Calculer le carré de chaque nombre
for (int& num : numbers) {
num = num * num;
}
// Afficher les nombres transformés
for (int num : numbers) {
std::cout << num << " ";
}
return 0;
}
Traitement de structures de données complexes
Itération imbriquée
#include <iostream>
#include <vector>
int main() {
std::vector<std::vector<int>> matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// Itérer sur un vecteur 2D
for (const auto& row : matrix) {
for (int num : row) {
std::cout << num << " ";
}
std::cout << std::endl;
}
return 0;
}
Modèles d'itération
graph TD
A[Modèles d'itération] --> B[Itération linéaire simple]
A --> C[Itération imbriquée]
A --> D[Itération conditionnelle]
A --> E[Transformation]
Techniques d'itération avancées
Itérer avec l'index
#include <iostream>
#include <vector>
int main() {
std::vector<std::string> fruits = {"pomme", "banane", "cerise"};
// Itérer avec l'index
for (size_t i = 0; i < fruits.size(); ++i) {
std::cout << "Index " << i << " : " << fruits[i] << std::endl;
}
return 0;
}
Cas d'utilisation courants
| Cas d'utilisation |
Description |
Exemple |
| Traitement de données |
Transformer ou filtrer des collections |
Calculer le carré des nombres |
| Configuration |
Itérer sur les paramètres de configuration |
Lecture des paramètres de configuration |
| Initialisation |
Remplir des structures de données |
Remplissage de tableaux ou de vecteurs |
Bonnes pratiques
- Utiliser les références constantes pour les itérations en lecture seule.
- Éviter de modifier le conteneur pendant l'itération.
- Choisir la méthode d'itération la plus appropriée.
graph TD
A[Performance] --> B[Par valeur]
A --> C[Par référence]
A --> D[Par référence constante]
B --> E[Surcoût de copie]
C --> F[Modification directe]
D --> G[Le plus efficace pour les objets volumineux]
Conclusion
Les boucles for basées sur la plage fournissent des mécanismes d'itération puissants et flexibles. LabEx recommande de maîtriser ces modèles pour écrire un code C++ plus expressif et efficace.