2011-01-17 23 views
8

¿Hay algún problema al utilizar punteros como claves hashtable durante la ejecución del programa? (no es necesario almacenar en el disco y usarlo más adelante, ya que causa problemas obvios)C++: Puntero como clave en una tabla hash

Hay muchas circunstancias en las que necesito saber rápidamente si un objeto pertenece a algún administrador de objetos. Una forma rápida de comprobarlo es almacenar todos los objetos de un administrador de objetos en una tabla hash donde el puntero del objeto es la clave para el objeto real: por ejemplo, HashTable

Respuesta

5

No, no hay problemas. Es como guardar un int.

Un puntero tiene un valor que no cambia y que identifica un recurso de manera única.

Por supuesto que hay problemas si no usa bien sus punteros, pero esta es otra cosa no correlacionada.

+0

De hecho, los punteros pueden ser más seguros que 'std :: string', ya que son mutables. 'boost :: hash' y' std :: tr1 :: hash' están explícitamente diseñados para funcionar con punteros. Sin embargo, la administración de memoria puede volverse complicada. –

0

Debería funcionar bastante bien. ¿Estás viendo algún problema? Tal vez deberías tratar de ver. :)

0

Fuera de la cabeza: si se elimina el espacio de memoria señalado por la tabla hash sin eliminar primero las referencias al espacio de memoria apuntadas por los punteros, habrá pérdidas de memoria.

Cuestiones relacionadas