J'ai une structure de données vector<set<char> >
(base de données de transactions) et je veux en connaître la taille. Quand j'utilise sizeof () avec chaque set<char>
, la taille est de 24 malgré que le jeu contienne 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 connaître la taille d'une structure de données. Toute aide? Merci.
Vous voulez vector::size()
et set::size()
.
En supposant que v
est votre vecteur, procédez comme suit:
size_t size = 0;
for (vector<set<char> >::const_iterator cit = v.begin(); cit != v.end(); ++cit) {
size += cit->size();
}
sizeof()
vous donne la taille en mémoire de l'objet/du type auquel il est appliqué, en multiples de sizeof(char)
(généralement un octet). Si vous souhaitez connaître la taille en mémoire du conteneur et de ses éléments, vous pouvez procéder comme suit:
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 un pointeur sur un tableau par exemple, elle ne comptera pas la taille du tableau, elle ne comptera que la taille du pointeur (4 sur 32 bits) à utiliser avec le vecteur .size
Vector est mis en œuvre à l'aide de pointeurs internes vers le stockage actuel. Ainsi, sizeof () retournera toujours le même résultat, ce qui n'inclut pas le stockage de données lui-même. Essayez d'utiliser la méthode vector::size()
à la place. Cela retournera le nombre d'éléments dans le vecteur.
sizeof()
est calculé à la compilation, il n’ya donc aucun moyen de vous dire le nombre d’éléments qu’il contient.
Utilisez la méthode size()
de l'objet vectoriel.
vector
in STL est un modèle de classe, lorsque vous indiquez un paramètre de modèle dans le vecteur suivant <SomeType>
, le code généré par le compilateur C++ pour une classe de type SomeType . Ainsi, lorsque vous remplissez le vecteur à l'aide de Push_back
, vous insérez en fait un autre objet de SomeType
. Ainsi, lorsque vous demandez .size()
au compilateur, il vous donne le nombre d'objets SomeType
que vous avez insérés.
J'espère que cela pourra aider!
Utilisez la fonction membre vector::size()
pour connaître le nombre d'éléments dans le vecteur. Astuce - ils sont alloués sur le magasin gratuit.