sizeof () un vecteur
J'ai un vector<set<char> >
structure de données (transactions de base de données) et je veux savoir la taille de celui-ci. Lorsque j'utilise sizeof() avec chaque set<char>
la taille est de 24 en dépit de l'ensemble contient 3, 4 ou 5 caractères. Plus tard, lorsque j'utilise sizeof() avec le vector<set<char> >
la taille est de 12... je suppose que ce n'est pas le moyen de savoir la taille d'une structure de données. Toute aide?
Merci.
source d'informationauteur peterJk
Vous devez vous connecter pour publier un commentaire.
Vous voulez
vector::size()
etset::size()
.En supposant
v
est votre vecteur, faites ceci:sizeof()
est de vous donner la taille en mémoire de l'objet/type il est appliqué, en multiples desizeof(char)
(généralement un octet). Si vous voulez savoir la taille en mémoire du conteneur et de ses éléments, vous pourriez faire ceci:sizeof(v) + sizeof(T) * v.capacity(); //where T is the element type
sizeof
renvoie la taille de l'objet lui-même. si elle contient pointeur de tableau par exemple, il ne pourra compter que la taille de la table, il compte seulement la taille du pointeur (4 sur 32 bits) pour les vecteurs utilisation.size
Vecteur est mis en œuvre à l'aide de pointeurs internes pour le stockage réelle. Donc sizeof() renverra toujours le même résultat qui n'inclut pas le stockage de données elle-même. Essayez d'utiliser le
vector::size()
méthode à la place. Cela renvoie le nombre d'éléments dans le vecteur.sizeof()
est calculée au moment de la compilation, il n'existe aucun moyen il peut vous dire combien d'éléments il a à l'intérieur.Utiliser le
size()
méthode de l'objet vectoriel.vector
dans la STL est un modèle de classe, quand vous donnez paramètre de modèle à l'intérieur de<SomeType>
vectorielles suivantes, compilateur C++ code généré pour une classe de type SomeType. Ainsi, lorsque vous remplissez le vecteur à l'aidepush_back
vous êtes en fait en insérant un autre objet deSomeType
donc quand vous le demande.size()
du compilateur, il vous donne le nombre deSomeType
les objets que vous avez insérés.Espérons que ça aide!
Utilisation
vector::size()
fonction membre pour trouver le nombre d'éléments dans le vecteur. Indice: ils sont attribués sur la magasin gratuit.