web-dev-qa-db-fra.com

Comment puis-je découvrir la taille / longueur (en octets) d'un vecteur std ::?

J'ai un vecteur et je veux l'écrire et le lire dans un fichier mais il n'est pas possible de déterminer la taille logique d'un vecteur à l'aide de l'opérateur sizeof.

Alors, que dois-je faire?

22
Vahid Haratian

Un vecteur c ++ std :: a une méthode size() qui retourne sa taille.

EDIT: comme je comprends maintenant, vous devez calculer la mémoire utilisée par un vecteur donné. Vous ne pouvez pas utiliser sizeof pour cela car un vecteur utilise la mémoire dynamique et stocke uniquement un pointeur d'un tableau dynamique contenant ses éléments. Donc, ma meilleure suggestion serait de multiplier la mémoire dont chaque élément a besoin par le nombre d'éléments. Notez à nouveau que cela ne fonctionnera pas si les objets stockent un pointeur sur certains objets alloués dynamiquement - vous devrez à nouveau calculer leurs tailles séparément.

Il n'y a pas de moyen facile de calculer la mémoire d'une taille vectorielle en octets en c ++ que je connaisse.

37
Ivaylo Strandjev