2011-01-17 9 views
8

Czy podczas uruchamiania programu występują jakieś problemy z używaniem wskaźników jako kluczy hashtable? (nie trzeba przechowywać na dysku i używać go później, ponieważ powoduje to oczywiste problemy)C++: Wskaźnik jako klucz w hashtable

Jest wiele okoliczności, w których muszę szybko wiedzieć, czy obiekt należy do jakiegoś menedżera obiektów. Szybkim sposobem sprawdzenia tego jest przechowywanie każdego obiektu w menedżerze obiektów w hoście, gdzie wskaźnik obiektu jest kluczem do rzeczywistego obiektu: E.g, HashTable

Odpowiedz

5

Nie, nie ma żadnych problemów. To tak jak przechowywanie int.

Wskaźnik ma wartość, która się nie zmienia i jednoznacznie identyfikuje zasób.

Są oczywiście problemy, jeśli nie używasz dobrze swoich wskazówek, ale to jest kolejna, nieskorelowana rzecz.

+0

W rzeczywistości wskaźniki mogą być bezpieczniejsze niż 'std :: string', ponieważ są zmienne. 'boost :: hash' i' std :: tr1 :: hash' są jawnie zaprojektowane do pracy ze wskaźnikami. Zarządzanie pamięcią może się jednak skomplikować. –

0

Powinien działać wystarczająco dobrze. Czy widzisz jakieś problemy? Może powinieneś po prostu spróbować. :)

0

Z góry mojej głowy - Jeśli przestrzeń mem wskazywana przez twoją tablicę hashtable zostanie zwolniona bez uprzedniego usunięcia odniesień do przestrzeni mem wskazanej przez twoje wskaźniki, będą tam przesiadywane wycieki pamięci.