1

unordered_list のキーとして string* を使用したいと思います。ポインター自体のハッシュは必要ありませんが、ポインターが指す文字列は必要です。

次のような構造体を作成する必要があることを理解しています。

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

それをハッシャーとしてマップテンプレートに送信しますが、方法がわかりません。

4

1 に答える 1

2

基本的にはそれだけです。次に、それを型の 3 番目のテンプレート パラメーターとして指定します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 に答える