HOWTO · C++

Comment imprimer un tableau en C++

Cet article présente des méthodes pour imprimer un tableau en C++

Cet article présente les méthodes C++ permettant d’imprimer les éléments d’un tableau à la console.

Utiliser une boucle à base de gamme pour imprimer un tableau

Cette méthode est une boucle for typique uniquement avec un style moderne basé sur la gamme C++11. L’itération basée sur la plage fournit une option pour accéder aux éléments avec des spécificateurs personnalisés comme : par référence de const (auto const& i), par valeur (auto i), ou par référence de transfert (auto&& i). Les avantages de cette méthode par rapport à la boucle for traditionnelle sont la facilité d’utilisation et la lisibilité.

#include <iostream>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  for (auto const& value : arr) cout << value << "; ";
  cout << endl;

  return EXIT_SUCCESS;
}

Production:

1; 2; 3; 4; 5; 6; 7; 8; 9; 10;

Utilisation de l’algorithme de copy pour imprimer un tableau

La méthode de copie est implémentée dans la bibliothèque STL <algorithm> et offre un outil puissant pour les opérations à distance. La méthode copy prend les itérateurs de début et de fin de la gamme comme les deux premiers paramètres. Dans ce cas, nous passons un itérateur de flux de sortie comme troisième argument pour sortir des éléments de tableau vers la console.

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  copy(arr.begin(), arr.end(), std::ostream_iterator<int>(cout, "; "));
  cout << endl;

  return EXIT_SUCCESS;
}

Production:

1; 2; 3; 4; 5; 6; 7; 8; 9; 10;

Comme alternative, nous pouvons facilement réimplémenter l’exemple ci-dessus pour sortir les éléments du tableau dans l’ordre inverse. Pour cela, nous modifions les deux premiers arguments de la méthode “copy” et les remplaçons par des appels de fonction rbegin/rend.

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  copy(arr.rbegin(), arr.rend(), std::ostream_iterator<int>(cout, "; "));
  cout << endl;

  return EXIT_SUCCESS;
}

Production:

10; 9; 8; 7; 6; 5; 4; 3; 2; 1;

Utiliser l’algorithme for_each pour imprimer un tableau

for_each est un autre algorithme puissant de la bibliothèque STL. Il peut appliquer l’objet de fonction donné à chaque élément de la gamme. Dans ce cas, nous définissons une expression lambda comme une variable custom_func et nous la passons à la méthode for_each pour opérer sur les éléments du tableau donné.

#include <iostream>
#include <iterator>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  auto custom_func = [](auto &i) { cout << i << "; "; };
  for_each(arr.begin(), arr.end(), custom_func);
  cout << endl;

  return EXIT_SUCCESS;
}

Production:

1; 2; 3; 4; 5; 6; 7; 8; 9; 10;