d'obtenir le nombre d'éléments dans une struct
J'ai un struct:
struct KeyPair
{
int nNum;
string str;
};
Disons que j'initialise mon struct:
KeyPair keys[] = {{0, "tester"},
{2, "yadah"},
{0, "tester"}
};
Je serais la création de plusieurs instanciations de la structure avec des tailles différentes. Donc, pour moi, d'être capable de l'utiliser dans une boucle et de lire son contenu, je dois obtenir le nombre d'éléments dans une struct. Comment puis-je obtenir le nombre d'éléments dans la structure? Dans cet exemple, je devrait recevoir 3 depuis que j'ai initialisé 3 paires.
3 de quoi? (rembourrage)
Pourquoi ne pas utiliser un std::map et vous obtenez tous les itérateurs de travailler avec.
Je pense que vous voulez que le nombre d'éléments dans le tableau
Vous voulez de la taille de la structure ou la taille de la matrice? Il est source de confusion...
Pourquoi ne pas utiliser un std::map et vous obtenez tous les itérateurs de travailler avec.
Je pense que vous voulez que le nombre d'éléments dans le tableau
keys
, droit?Vous voulez de la taille de la structure ou la taille de la matrice? Il est source de confusion...
OriginalL'auteur Owen | 2010-11-25
Vous devez vous connecter pour publier un commentaire.
Si vous essayez de calculer le nombre d'éléments de la
keys
tableau, vous pouvez simplement fairesizeof(keys)/sizeof(keys[0])
.Le point est que le résultat de
sizeof(keys)
est la taille en octets du tableau de clés dans la mémoire. Ce n'est pas le même que le nombre d'éléments du tableau, sauf si ces éléments sont 1 octet de long. Pour obtenir le nombre d'éléments que vous devez diviser le nombre d'octets par la taille le type de l'élément qui estsizeof(keys[0])
, qui sera de retour de la taille du type de donnéeskey[0]
.La différence importante ici est de comprendre que
sizeof()
se comporte différemment avec les tableaux et les types de données. Vous pouvez combiner les deux pour obtenir ce dont vous avez besoin.http://en.wikipedia.org/wiki/Sizeof#Using_sizeof_with_arrays
sizeof t de retour de la taille en octets par la norme. Le standard C++ définit un "octet" comme un char. (Cela peut ne pas être le sens de "byte" vous êtes habitué, mais la norme est conforme.)
OriginalL'auteur Luca Matteis
OriginalL'auteur T33C
Si vous êtes en essayant de compter les éléments du tableau, vous pouvez faire une macro
OriginalL'auteur Alex Budovski
Vous dire le nombre d'éléments dans
keys
? Dans ce cas, vous pouvez utiliserint n = sizeof(keys)/sizeof(keys[0]);
OriginalL'auteur Naveen
En C++, il n'est généralement pas possible de le faire. Je suggère d'utiliser std::vector.
Les autres solutions de travail dans votre cas particulier, mais il doit être fait au moment de la compilation. Les tableaux de nouvelles ou malloc ne sera pas en mesure d'utiliser ces trucs.
OriginalL'auteur robert
Cela ne peut pas être une bonne solution en raison de la structure de rembourrage.
OriginalL'auteur noname