Потребление памяти контейнерами STL

Я работаю над приложением, в котором планирую использовать пару контейнеров STL. Приложение предпримет определенные шаги, если потребление памяти достигнет порогового значения. Для этого мне нужно выполнить почти точный расчет того, сколько памяти используется контейнерами STL.

vector<string> StringList
map<string, int> mapstring

Вот как я оцениваю память:

Для размера StringListвыполните цикл по всем элементам вектора и продолжайте добавлять размеры строк.

string size = sizeof(string) + string.capacity()*sizeof(char)

Затем, наконец, добавьте к этомуsizeof(StringList);

Для размера строки карты переберите все ключи контейнера и продолжайте добавлять размеры строк, а затем добавляйте размеры int, которые равны mapstring.size()*sizeof(int). Затем, наконец, добавьте к этомуsizeof(mapstring);

Я предполагаю, что лучшим подходом было бы определение собственного класса распределителя и отслеживание использования памяти внутри него, но написание такого может быть не -тривиальным. Хорошо ли выглядит эта оценка?

10
задан Some programmer dude 7 August 2012 в 07:56
поделиться