2013-01-09 16 views
19

Mam wektor i chcę go zapisać i odczytać do pliku, ale nie jest możliwe określenie logicznego rozmiaru wektora przy użyciu operatora sizeof.Jak mogę odkryć rozmiar/długość (w bajtach) std :: vector?

Co więc powinienem zrobić?

+1

Dlatego mają funkcję "size". Podczas przechodzenia przez wszystkie elementy, iteratory są bardziej naturalnym wyborem niż konieczność poznania rozmiaru. – chris

+0

Sposób zapisania pliku do pliku zależy od typu elementów - najpierw musisz wiedzieć, czy (i jak) można je zapisać do pliku. –

+5

-1 - brak czytania dokumentacji. –

Odpowiedz

37

C++ std :: vector ma metodę size(), która zwraca jej rozmiar.

EDYCJA: jak już to rozumiem, musisz obliczyć pamięć, której używa dany wektor. Nie możesz użyć sizeof do tego, ponieważ wektor używa pamięci dynamicznej i przechowuje tylko wskaźnik dynamicznej tablicy zawierającej jej elementy. Tak więc moją najlepszą sugestią byłoby pomnożenie pamięci wymaganej przez każdy element przez liczbę elementów. Zauważ, że to znowu nie zadziała, jeśli obiekty przechowują wskaźnik do niektórych dynamicznie przydzielonych obiektów - będziesz musiał ponownie obliczyć ich rozmiary osobno.

Nie ma łatwego sposobu obliczenia wielkości pamięci w bajtach w języku C++, które znam.

+1

Chcesz zmierzyć ** rozmiar pamięci ** ten wektor wymaga? –

+0

hej mój wektor jest bardziej skomplikowany, aby uzyskać tylko jego rozmiar, ponieważ jest zrobiony z obiektu, który zrobił z niektórych wektorów i niektórych ciągów i wiele innych rzeczy, które mają taką samą sytuację, chcę czegoś podobnego do memcopy –

+1

spójrz na moją zredagowaną odpowiedź –

Powiązane problemy