Я хотел бы поместить, используют строку* в качестве ключа в 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;