unordered_list のキーとして string* を使用したいと思います。ポインター自体のハッシュは必要ありませんが、ポインターが指す文字列は必要です。
次のような構造体を作成する必要があることを理解しています。
struct myhash{
size_t operator()(const string * str){
return hash(*str);
}
}
それをハッシャーとしてマップテンプレートに送信しますが、方法がわかりません。
unordered_list のキーとして string* を使用したいと思います。ポインター自体のハッシュは必要ありませんが、ポインターが指す文字列は必要です。
次のような構造体を作成する必要があることを理解しています。
struct myhash{
size_t operator()(const string * str){
return hash(*str);
}
}
それをハッシャーとしてマップテンプレートに送信しますが、方法がわかりません。
基本的にはそれだけです。次に、それを型の 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;