sto creando un vettore di stringhe in C++. Quello di cui ho bisogno è la memoria totale consumata in byte da questo vettore.memoria consumata da un vettore stringa in C++
Poiché le stringhe sono di dimensioni variabili, in questo momento sto iterando attraverso ogni elemento del vettore e trovandone la lunghezza, quindi alla fine lo sto moltiplicando per la dimensione del carattere. Quello di cui ho bisogno è una soluzione più pulita.
vector<string> v;
//insertion of elements
int len=0;
for(int i=0;i<v.size();i++)
len+=v[i].length();
int memory=sizeof(char)*len;
alternativamente, anche una soluzione per trovare il consumo di memoria di una stringa di array. diciamo
string a[SIZE]
trovare il numero di byte per a?
La memoria totale di un 'std :: string' non è solo la somma di' char's, c'è un overhead aggiuntivo nella classe. – CoryKramer
'sizeof (char)' è 1. E 'std :: accumulate' esprime chiaramente l'intento di accumulare cose, come le lunghezze. – chris
A seconda dell'implementazione, 'stringa' è memorizzato in modo diverso. Ad esempio in VS, 'stringa' ha un buffer di 16 caratteri allocato staticamente che utilizza per la velocità, quindi utilizza la memoria allocata dinamicamente se sono necessari più di 16 caratteri. – Blindy