Comment imprimer le contenu d'un vecteur en C++
-
Utiliser la boucle
for
avec la notation d’accès aux éléments pour imprimer le contenu vectoriel - Utiliser la boucle à base de gamme avec la notation d’accès aux éléments pour imprimer le contenu du vecteur
-
Utilisez
std::copy
pour imprimer le contenu des vecteurs -
Utilisez
std::for_each
pour imprimer le contenu du vecteur
Cet article présente plusieurs méthodes permettant d’imprimer des contenus vectoriels en C++.
Utiliser la boucle for
avec la notation d’accès aux éléments pour imprimer le contenu vectoriel
Les éléments vector
sont accessibles avec la méthode at()
ou l’opérateur []
. Dans cette solution, nous faisons une démonstration des deux et imprimons le contenu avec le flux cout
. Dans un premier temps, nous initialisons la variable vectorielle avec des entiers arbitraires, puis nous bouclons ses éléments
un par un pour imprimer le flux.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (size_t i = 0; i < int_vec.size(); ++i) {
cout << int_vec.at(i) << "; ";
}
cout << endl;
for (size_t i = 0; i < int_vec.size(); ++i) {
cout << int_vec[i] << "; ";
}
cout << endl;
return EXIT_SUCCESS;
}
Production:
1; 2; 3; 4; 5; 6; 7; 8; 9; 10;
1; 2; 3; 4; 5; 6; 7; 8; 9; 10;
Utiliser la boucle à base de gamme avec la notation d’accès aux éléments pour imprimer le contenu du vecteur
La solution précédente est relativement simple mais semble assez verbeuse. Le C++ contemporain offre des moyens plus souples d’exprimer les itérations, l’un d’eux étant la boucle basée sur la gamme. Il est considéré comme plus lisible lorsque les boucles effectuent des opérations relativement faciles et n’ont pas besoin d’être parallélisées.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (const auto &item : int_vec) {
cout << item << "; ";
}
cout << endl;
return EXIT_SUCCESS;
}
Utilisez std::copy
pour imprimer le contenu des vecteurs
Une méthode assez avancée pour effectuer les opérations d’itération et de sortie de vecteur en une seule instruction est d’appeler la fonction “copy”, définie dans la bibliothèque <algorithm>
. Cette méthode prend une plage de vecteurs spécifiée avec des itérateurs, et comme troisième argument, nous passons ostream_iterator
pour rediriger le contenu de la plage vers le flux cout
.
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::vector;
int main() {
vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
copy(int_vec.begin(), int_vec.end(), ostream_iterator<int>(cout, "; "));
cout << endl;
return EXIT_SUCCESS;
}
Utilisez std::for_each
pour imprimer le contenu du vecteur
Un autre algorithme STL pour faire les opérations d’itération et de sortie dans une seule instruction est for_each
. Cette méthode permet d’appliquer un objet de fonction à chaque élément de la plage spécifiée, ce qui est un outil puissant à avoir. Dans ce cas, nous passons l’expression lambda
, qui imprime les éléments dans le flux de sortie.
#include <algorithm>
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::for_each;
using std::vector;
int main() {
vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for_each(int_vec.begin(), int_vec.end(),
[](const int& n) { cout << n << "; "; });
cout << endl;
return EXIT_SUCCESS;
}
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