Используя строку* как ключ в unordered_set

Я хотел бы поместить, используют строку* в качестве ключа в unordered_list. Я не хочу хеш сам указатель, но строка, на которую он указывает.

Я понимаю, что должен создать структуру как это:

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

и отправьте его как мясорубка к шаблону карты, но я не уверен как.

1
задан izex 26 July 2010 в 07:32
поделиться

1 ответ

Вот в принципе и все. Затем вы предоставляете его в качестве третьего параметра шаблона для типа 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;
2
ответ дан 2 September 2019 в 22:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: