Consumo de memoria por contenedores STL.

Estoy trabajando en una aplicación en la que planeo usar un par de contenedores STL. La aplicación tomará ciertos pasos si el consumo de memoria alcanza un umbral. Para ello, necesito realizar un cálculo casi preciso de la cantidad de memoria que utilizan los contenedores STL.

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

Así es como estoy estimando la memoria:

Para el tamaño deStringList, recorre todos los elementos del vector y sigue agregando los tamaños de cadena.

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

Entonces finalmente agregue a estosizeof(StringList);

Para el tamaño de la cadena de mapas, recorra todas las claves del contenedor y continúe agregando los tamaños de cadena y luego agregue los tamaños de int que esmapstring.size()*sizeof(int). Entonces finalmente agregue a estosizeof(mapstring);

Supongo que un mejor enfoque sería especificar la propia clase de asignador y hacer un seguimiento del uso de la memoria dentro de ella, pero escribir una podría ser no trivial. ¿Esta estimación se ve bien?