656 votes

Comment trouver la longueur d’un tableau ?

Y a-t-il un moyen de trouver combien de valeurs un tableau a ? Détecter si oui ou non je suis arrivée au bout d’un tableau fonctionnerait aussi.

610voto

Oli Charlesworth Points 148744

Si vous voulez dire un tableau de style C, alors vous pouvez faire quelque chose comme :

Cela ne fonctionne pas sur les pointeurs, cependant, c.-à-d. il ne fonctionnera pas pour une des opérations suivantes :

ou :

En C++, si vous voulez ce genre de comportement, alors vous devriez utiliser une classe de conteneur ; probablement `` .

174voto

Motti Points 32921

Comme les autres ont dit, vous pouvez utiliser l' sizeof(arr)/sizeof(*arr) , mais cela va vous donner la mauvaise réponse pour pointeur de types qui ne sont pas des tableaux.

template<class T, size_t N>
size_t size(T (&)[N]) { return N; }

Ce qui a la propriété de ne pas compiler pour les non type de matrice (visual studio a _countof qui le fait).

Vous pouvez également envisager d'utiliser des std::array de C++11 qui expose sa longueur avec l'absence de charge sur une native C tableau.

108voto

MahlerFive Points 1697

Faire vous obtiendrez le nombre total d’octets alloués à cette baie. Vous pouvez ensuite trouver le nombre d’éléments dans le tableau en divisant par la taille d’un élément dans le tableau :

63voto

Prasoon Saurav Points 47488

Existe-t-il un moyen de déterminer le nombre de valeurs d'un tableau?

Oui!

Essayez sizeof(array)/sizeof(array[0])

Détecter si j'ai atteint la fin d'un tableau fonctionnerait aussi.

Je ne vois aucun moyen pour cela à moins que votre tableau ne soit un tableau de caractères (c'est-à-dire une chaîne de caractères).

PS: En C ++, utilisez toujours std::vector . Il existe plusieurs fonctions intégrées et une fonctionnalité étendue.

32voto

eq- Points 6181

std::vector a une méthode size() qui renvoie le nombre d'éléments dans le vecteur.

(Oui, c'est une réponse ironique)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X