2011-01-17 13 views
8

Ci sono problemi nell'utilizzo dei puntatori come chiavi hashtable durante l'esecuzione del programma? (non è necessario archiviare su disco e utilizzarlo in un secondo momento poiché ciò causa problemi evidenti)C++: puntatore come chiave in una tabella hash

In molte circostanze è necessario conoscere rapidamente se un oggetto appartiene a un gestore oggetti. Un modo rapido per controllarlo è memorizzare ogni oggetto in un gestore oggetti in una tabella hash dove il puntatore dell'oggetto è la chiave dell'oggetto reale: E.g, HashTable

risposta

5

No, non ci sono problemi. È come memorizzare un int.

Un puntatore ha un valore che non cambia e identifica in modo univoco una risorsa.

Ovviamente ci sono problemi se non si usano bene i puntatori, ma questa è un'altra cosa non correlata.

+0

In effetti, i puntatori possono essere più sicuri di 'std :: string', poiché quelli sono mutabili. 'boost :: hash' e' std :: tr1 :: hash' sono esplicitamente progettati per funzionare con i puntatori. Tuttavia, la gestione della memoria può diventare complicata. –

0

Dovrebbe funzionare abbastanza bene. Stai riscontrando problemi? Forse dovresti solo provare a vedere. :)

0

Fuori dalla parte superiore della mia testa - Se lo spazio mem indicato dal tuo hashtable è deallocato senza prima eliminare i riferimenti allo spazio mem indicato dai tuoi puntatori, ci saranno perdite di memoria in giro.

Problemi correlati