Comment trouver la taille d'un tableau en C++
-
Utiliser l’opérateur
sizeof
pour calculer la taille des tableaux de type C en C++ -
Utilisez le conteneur
std::array
pour stocker les données d’un tableau et calculer sa taille -
Utilisez le conteneur
std::vector
pour stocker les données d’un tableau et calculer sa taille -
Utilisez la méthode
std::size
pour calculer la taille des tableaux
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;
}
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