2013-01-09 9 views
19

Ho un vettore e voglio scriverlo e leggerlo in un file ma non è possibile determinare la dimensione logica di un vettore usando l'operatore sizeof.Come posso scoprire la dimensione/lunghezza (in byte) di un vettore std ::?

Quindi cosa devo fare?

+1

Ecco perché hanno una funzione 'size'. Quando si passano attraverso tutti gli elementi, gli iteratori sono una scelta più naturale rispetto alla necessità di conoscere la dimensione. – chris

+0

Come scrivere in un file dipende dal tipo di elementi: prima devi sapere se (e come) possono essere scritti su file. –

+5

-1 per non aver letto la documentazione. –

risposta

37

Un C++ std :: vector ha un metodo size() che restituisce la sua dimensione.

EDIT: come ho capito ora è necessario calcolare la memoria utilizzata da un dato vettore. Non è possibile utilizzare sizeof per questo come un vettore utilizza la memoria dinamica e memorizza solo un puntatore di un array dinamico che contiene i suoi elementi. Quindi il mio miglior suggerimento sarebbe quello di moltiplicare la memoria di ogni elemento richiesto dal numero di elementi. Nota che questo non funzionerà se gli oggetti memorizzano un puntatore su alcuni oggetti allocati dinamicamente - dovrai calcolare nuovamente le loro dimensioni separatamente.

Non esiste un modo semplice per calcolare la memoria di una dimensione vettoriale in byte in C++ che io conosca.

+1

Vuoi misurare ** la dimensione della memoria ** richiesta da questo vettore? –

+0

hey il mio vettore è più complicato di ottenere solo una dimensione di esso perché è fatto di un oggetto che ha fatto di alcuni vettori e qualche stringa e molto altro di cui hanno la stessa situazione, voglio qualcosa come una memcopy –

+1

dai un'occhiata alla mia risposta modificata –

Problemi correlati