1

我想将使用字符串 * 作为 unordered_list 中的键。我不想要指针本身的哈希值,而是它指向的字符串。

我知道我需要创建一个这样的结构:

struct myhash{
    size_t operator()(const string * str){
        return hash(*str);
    }
}

并将其作为哈希器发送到地图模板,但我不确定如何。

4

1 回答 1

2

基本上就是这样。然后将它作为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;
于 2010-07-26T07:35:18.517 回答