Comment trouver la taille d'un tableau en C++

Jinku Hu 12 octobre 2023
  1. Utiliser l’opérateur sizeof pour calculer la taille des tableaux de type C en C++
  2. Utilisez le conteneur std::array pour stocker les données d’un tableau et calculer sa taille
  3. Utilisez le conteneur std::vector pour stocker les données d’un tableau et calculer sa taille
  4. Utilisez la méthode std::size pour calculer la taille des tableaux
Comment trouver la taille d'un tableau en C++

Cet article présente la façon d’obtenir la taille d’un tableau en utilisant différentes méthodes C++.

Utiliser l’opérateur sizeof pour calculer la taille des tableaux de type C en C++

Tout d’abord, voyons ce qui se passe lorsque nous essayons de trouver la taille des tableaux de type C. Pour cet exemple, nous définissons une variable c_array et l’initialisons avec 10 valeurs entières. Pour calculer la taille de ce tableau, nous utilisons l’opérateur unaire sizeof, qui retourne la taille de l’objet en octets. En gros, nous divisons le nombre d’octets nécessaires pour stocker l’objet c_array par la taille de son élément unique c_array[0]:

#include <iostream>

using std::cin;
using std::cout;
using std::endl;

int main() {
  int c_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  cout << "array size: " << sizeof c_array / sizeof c_array[0] << endl;
  return 0;
}

Production:

array size : 10

Comme vous pouvez le voir, la sortie semble correcte. Maintenant, essayons de définir une fonction séparée qui fait la même chose pour nous:

#include <iostream>

using std::cin;
using std::cout;
using std::endl;

int get_array_size(int arr[]) { return sizeof arr / sizeof arr[0]; }

int main() {
  int c_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  cout << "array size: " << get_array_size(c_array) << endl;
  return 0;
}

Production:

array size : 2

Nous obtenons le mauvais nombre. L’utilisation de l’opérateur sizeof n’est pas une méthode fiable pour résoudre ce problème. Pour que l’opérateur sizeof fonctionne correctement, le tableau ne doit pas être reçu comme un paramètre de fonction et ne doit pas être alloué dynamiquement (sur le Heap). Pour identifier l’utilisation incorrecte de sizeof, les IDEs vont généralement lister les sections de code sujettes aux erreurs, mais vous pouvez également spécifier des drapeaux de compilation pour les avertissements à afficher pendant la compilation (par exemple -Wsizeof-pointer-div ou -Wall avec gcc).

Il n’y a pas de moyen universel de calculer la taille des tableaux de style C sans se soucier des nombreux cas de bord, et c’est pourquoi la classe std::vector existe.

Utilisez le conteneur std::array pour stocker les données d’un tableau et calculer sa taille

Avant de nous lancer dans l’utilisation de std::vector, nous devrions mentionner std::array, que vous pouvez utiliser pour stocker des tableaux de taille fixe. Il a l’avantage d’être économe en ressources et possède une méthode intégrée pour récupérer la taille appelée size().

#include <array>
#include <iostream>

using std::array;
using std::cin;
using std::cout;
using std::endl;

int main() {
  array<int, 10> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  cout << "array size: " << arr.size() << endl;

  return 0;
}

Utilisez le conteneur std::vector pour stocker les données d’un tableau et calculer sa taille

Le conteneur std::vector peut être utilisé pour stocker des tableaux dynamiques, et il offre de multiples méthodes pour différentes opérations, y compris size().

#include <iostream>
#include <vector>

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

int main() {
  vector<int> int_array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  cout << "vector size: " << int_array.size() << endl;

  return 0;
}

Utilisez la méthode std::size pour calculer la taille des tableaux

La méthode std::size fait partie de la bibliothèque <iterator> et elle peut fonctionner sur des données std::array ainsi que sur des données std::vector retournant le nombre d’éléments.

#include <array>
#include <iostream>
#include <vector>

using std::array;
using std::cin;
using std::cout;
using std::endl;
using std::size;
using std::vector;

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

  cout << "vector size: " << size(int_array) << endl;
  cout << "array size: " << size(arr) << endl;

  return 0;
}
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++ Array