将指针散列为C++ STL中unordered_map的键

Amm*_*ain 7 c++ hash stl unordered-map

我张贴了类似的quetion使用在C++ STL地图指针作为键就.当用作Keys时,指针如何在unordered_maps中进行哈希处理.更具体地说,如果我定义:

std::unordered_map< CustomClass*, int > foo;
Run Code Online (Sandbox Code Playgroud)

默认的C++ std :: hash实现是否可以处理这些指针?使用安全吗?这是好习惯吗?

Mar*_*som 10

std::hash<T*>已定义,但其操作方式的细节取决于实现.它肯定是安全的,我认为这是一个好习惯 - 只要它是你需要的指针作为键,而不是对象内容本身.

  • @echo我认为你错过了我的观点 - 指针本身是关键,而不是*指向*关键的指针。因此,即使关键对象的内容相同,两个对象在“unordered_map”中也会是分开的。 (2认同)