Je comprends que le deque et le vecteur réservent un espace pour la croissance. vector :: capacity() est capable d'obtenir l'espace réservé interne pour un vecteur. Deque n'a pas un tel membre dans la norme. Y a-t-il un moyen d'obtenir cette information?Existe-t-il un moyen d'obtenir la taille de stockage interne de deque comme vecteur :: capacité?
Répondre
Non portable. La raison pour laquelle il n'y a pas de membre capacity
pour deque est qu'il n'utilise pas de mémoire contiguë. Il n'y a aucune raison, sur le plan de la performance, de le considérer.
Vous devrez creuser dans l'implémentation pour comprendre cela. La version de std::deque
fournie avec gcc 4.1.1 semble allouer de la mémoire dans les blocs de 512 octets. Mais c'est aussi loin que j'ai eu après 15 minutes de regarder tous les traits de soulignement et les lancers de style C à size_t
. Et puis je suis tombé sur ce commentaire:
La mise en page initiale de la mémoire sous-jacente est un peu compliqué ...
+1 J'aime les commentaires comme ça – Patrick
- 1. quelle est la capacité d'un vecteur vide?
- 2. C vecteur comme char *** vecteur
- 3. Est-ce que std :: vector.pop_back() change la capacité du vecteur?
- 4. clé/valeur Open Source capable de [stockage] haute capacité
- 5. Taille de stockage ODBC
- 6. Comment libérer de la mémoire à partir de std :: deque?
- 7. android interne de stockage de téléphone
- 8. Stockage du vecteur XNA Animations
- 9. taille Sélection du vecteur de vecteurs
- 10. vecteur avec taille constante
- 11. Stockage interne Android - quelles sont les limites?
- 12. Stockage interne et externe Android
- 13. déclaration de vecteur et allocation de la taille
- 14. Stockage interne android -Dispositif mémoire
- 15. un moyen de définir la taille de mon UIViewController
- 16. Déclaration du vecteur de taille zéro
- 17. initialise une deque de pointeurs vectoriels
- 18. FIndication de la capacité de stockage du disque dur par programme
- 19. L'itérateur de C++ deque invalidé après push_front()
- 20. Ajouter un bloc d'éléments à la fin de std :: deque
- 21. Comment obtenir l'élément précédent de std :: deque?
- 22. Détecter la capacité de l'iPhone/iPod/iPad
- 23. Monotouch - Utilisation de la classe Application comme stockage d'objets communs
- 24. Stockage de table Azure: taille variable maximale?
- 25. Stockage vecteur dans une struct C++
- 26. Java Deque sans utiliser les classes existantes comme LinkedList?
- 27. Accès Vecteur dans la classe avec "class [i]" comme classe serait le vecteur
- 28. C++ vecteur comme un paramètre Aide
- 29. Scripts d'opéra et états de stockage (comme GM_SetValue dans greasemonkey)
- 30. Spécification de la capacité globale EhCache
Voir aussi Sutter Herb [Guru de la semaine # 54: en utilisant le vecteur et Deque] (http : //www.gotw.ca/gotw/054.htm). –
J'ai lu ce chapitre. Il n'y a peut-être aucune raison d'obtenir la capacité de deque dans la réalité, mais je suis simplement curieux. – Dingle
Pour quelle raison voulez-vous connaître la capacité? Dans un vecteur, il est clair que la croissance est une opération plutôt coûteuse où tous les objets existants doivent être déplacés vers un emplacement différent en mémoire, mais avec la croissance des files d'attente ne coûte pas cher. C'est-à-dire: la capacité est le nombre d'éléments qu'elle peut contenir avant de devenir douloureuse. Et cela ne s'applique qu'aux vecteurs. –