Les vecteurs sont des tableaux dynamiques en C++, offrant une manière flexible de gérer des séquences d’éléments. Une itération efficace est cruciale pour de nombreuses opérations basées sur les vecteurs. Cet article explore plusieurs méthodes pour itérer à travers les vecteurs C++, en fournissant des exemples clairs pour chacune.
Table des matières
- Comprendre les vecteurs en C++
- Itérer avec la boucle
for
traditionnelle - Itérer avec la boucle
for
basée sur la plage - Itérer avec les itérateurs
- Choisir la bonne méthode d’itération
Comprendre les vecteurs en C++
Les vecteurs, partie de la Standard Template Library (STL) de C++, sont déclarés en utilisant l’en-tête <vector>
. Ils offrent des avantages significatifs par rapport aux tableaux de style C traditionnels :
- Dimensionnement dynamique : Les vecteurs redimensionnent automatiquement selon les besoins, simplifiant la gestion de la mémoire.
- Accès facile aux éléments : Les éléments sont accessibles en utilisant l’opérateur
[]
, similaire aux tableaux. - Intégration STL : Les vecteurs s’intègrent parfaitement avec d’autres composants STL.
Voici comment déclarer et initialiser un vecteur :
#include <iostream>
#include <vector>
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
return 0;
}
Itérer avec la boucle for
traditionnelle
Une boucle for
traditionnelle offre un contrôle explicite sur l’itération :
#include <iostream>
#include <vector>
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
for (size_t i = 0; i < myVector.size(); ++i) {
std::cout << myVector[i] << " ";
}
std::cout << std::endl; // Sortie : 1 2 3 4 5
return 0;
}
L’utilisation de size_t
pour le compteur de boucle assure la compatibilité et évite les avertissements potentiels.
Itérer avec la boucle for
basée sur la plage
Introduite en C++11, la boucle for
basée sur la plage simplifie l’itération :
#include <iostream>
#include <vector>
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
for (auto element : myVector) {
std::cout << element << " ";
}
std::cout << std::endl; // Sortie : 1 2 3 4 5
return 0;
}
auto
déduit automatiquement le type d’élément, rendant le code concis et lisible.
Itérer avec les itérateurs
Les itérateurs fournissent un moyen puissant et flexible de parcourir les conteneurs. Ils prennent en charge les méthodes de parcours avant, arrière et autres. Bien que moins concis pour une itération simple, ils sont essentiels pour les opérations complexes.
#include <iostream>
#include <vector>
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
for (std::vector<int>::iterator it = myVector.begin(); it != myVector.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl; // Sortie : 1 2 3 4 5
return 0;
}
myVector.begin()
et myVector.end()
renvoient des itérateurs pointant respectivement vers le début et au-delà de la fin du vecteur. L’opérateur de déréférencement (*
) accède à la valeur de l’itérateur.
Choisir la bonne méthode d’itération
La meilleure méthode d’itération dépend de vos besoins. Pour une itération simple, la boucle for
basée sur la plage est souvent préférée pour sa lisibilité et son efficacité. La boucle for
traditionnelle offre plus de contrôle, tandis que les itérateurs offrent une plus grande flexibilité pour les scénarios avancés.