Comment imprimer le contenu d'un vecteur en C++

Jinku Hu 12 octobre 2023
  1. Utiliser la boucle for avec la notation d’accès aux éléments pour imprimer le contenu vectoriel
  2. Utiliser la boucle à base de gamme avec la notation d’accès aux éléments pour imprimer le contenu du vecteur
  3. Utilisez std::copy pour imprimer le contenu des vecteurs
  4. Utilisez std::for_each pour imprimer le contenu du vecteur
Comment imprimer le contenu d'un vecteur en C++

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;
}
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Article connexe - C++ Vector