sizeof() std::vector (C++)
Es ist ein Thema, das bereits zu diesem Thema, aber ich habe Zweifel immer noch. Zum berechnen der Größe eines Vektors, welcher der richtige ist:
sizeof(VEC) + sizeof(int) * VEC.capacity()
oder
VEC.capacity() * (sizeof(VEC) + sizeof(int))
- mögliche Duplikate von sizeof() ein Vektor
- Das ist nur eine Vermutung, je nachdem, wie die Umsetzung funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was meinst du mit " Größe des Vektors? Die Größe des vector-Objekts ist nur
Wenn Sie daran interessiert sind, wie viel Speicher hat der Vektor dem heap zugeordnet, die Sie verwenden können,
Also, wenn Sie fügen Sie diese, erhalten Sie, wie viel Speicher Sie haben "verloren", weil der Vektor.
Bitte beachten Sie, dass genau, wie viel Speicher zugewiesen wird, ist von der Implementierung abhängig. Es ist nur so, dass die obige Formel wird praktisch korrekt (oder annähernd korrekt) auf die meisten, wenn nicht alle Implementierungen.
vector
kann werden wirksam umgesetzt, das gibt eine richtige lower bound auf die Menge des Arbeitsspeichers, den einvector
und seinen Inhalt zu besetzen. +1.std::vector<T>
ist, um das eigentlich Objekt speichern einen Zeiger aufT
was ist ein Zeiger auf den Anfang der Elemente und haben die controlling-Daten (diestd::vector<T>
's-Größe, die Kapazität und Zuweisung) unmittelbar vor die Werte. Dieser Ansatz ist nicht unbedingt tragbar, aber es hat nicht zu sein, dastd::vector<T>
ist Teil der Implementierung. Neben den Steuer-Daten derstd::vector<T>
den Speicher verwalten-system in der Regel fügt auch ein paar bytes vor dem Speicher.std::vector<bool>
wie ich gehört habe, dass Sie anders implementiert sind.Wenn Sie wollen, um zu wissen, die Größe der enthaltenen Daten, der Vektor
Wenn der Feldtyp von int zu sagen lange lange nichts geändert werden. Ich finde diese Lösung sicherer, bei der man dann mit dem Typ in sizeof denn es kann leicht geändert werden, ohne die anderen.