我想将使用字符串 * 作为 unordered_list 中的键。我不想要指针本身的哈希值,而是它指向的字符串。
我知道我需要创建一个这样的结构:
struct myhash{
size_t operator()(const string * str){
return hash(*str);
}
}
并将其作为哈希器发送到地图模板,但我不确定如何。
我想将使用字符串 * 作为 unordered_list 中的键。我不想要指针本身的哈希值,而是它指向的字符串。
我知道我需要创建一个这样的结构:
struct myhash{
size_t operator()(const string * str){
return hash(*str);
}
}
并将其作为哈希器发送到地图模板,但我不确定如何。
基本上就是这样。然后将它作为unordered_map
类型的第三个模板参数提供(我将假设它是 C++0x 的)。我会概括它,以便它可以在任何情况下使用,而不仅仅是string
:
struct dereference_hash
{
template <typename T>
std::size_t operator()(const T* pX)
{
return std::hash<T>()(*pX);
}
};
typedef std::unordered_map<std::string*, int, dereference_hash> map_type;