Ayer traté de usar unordered_map y este código me confundió la cantidad de memoria que usaba.std :: unordered_map uso de memoria muy alto
typedef list<string> entityId_list;
struct tile_content {
char cost;
entityId_list entities;
};
unordered_map<int, tile_content> hash_map;
for (size_t i = 0; i < 19200; i++) {
tile_content t;
t.cost = 1;
map[i] = t;
}
Todas estas partes del código se compilaron en MS VS2010 en modo de depuración. Lo que me han visto en mi administrador de tareas fue de aproximadamente 1200 kb de proceso "limpio", pero después de rellenar hash_map utiliza 8124 kb de memoria. ¿Es el comportamiento normal de unordered_map? ¿Por qué se usa tanta memoria?
Solo quería señalar que un mapa desordenado puede contener hasta cientos de megabytes incluso cuando no se almacena ningún elemento en el interior (cuando se borran a través de iteradores, porque si el mapa vuelve a aparecer el iterador no es válido) consulte este informe de errores (que puede así no afectará la implementación de Microsoft): https://svn.boost.org/trac/boost/ticket/11419 – GameDeveloper