Tworzę wektor ciągów w C++. Potrzebuję całkowitej pamięci zużywanej w bajtach przez ten wektor.pamięć zużywana przez wektor łańcuchowy w C++
Ponieważ ciągi mają zmienny rozmiar, teraz wykonuję iterację poprzez każdy element wektorowy i znajdując jego długość, a następnie na końcu pomnożę to do rozmiaru znaku. Potrzebuję czystszego rozwiązania.
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;
alternatywnie rozwiązaniem byłoby również znaleźć zużycie pamięci tablicy napisów. załóżmy, że
string a[SIZE]
znaleźć liczbę bajtów dla?
Całkowita pamięć 'std :: string' to nie tylko suma' char's, ale dodatkowe obciążenie w klasie. – CoryKramer
'sizeof (char)' is 1. I 'std :: accumulate' wyraźnie wyraża zamiar gromadzenia rzeczy, takich jak długości. – chris
W zależności od implementacji 'ciąg' jest przechowywany inaczej. Na przykład w VS, 'string' ma 16-znakowy bufor przydzielony statycznie, który wykorzystuje do prędkości, a następnie wykorzystuje dynamicznie przydzieloną pamięć, jeśli potrzebujesz więcej niż 16 znaków. – Blindy