Я хотел бы использовать строку * в качестве ключа в неупорядоченном списке. Я не хочу, чтобы хеш сам указатель, но строка, на которую он указывает.Использование строки * в качестве ключа в unordered_set
Я понимаю, что нужно создать-структуру, как это:
struct myhash{
size_t operator()(const string * str){
return hash(*str);
}
}
и отправить его как в Hasher в шаблоне карты, но я не знаю, как.
Есть ли причина, вы должны использовать '' строку *, а не 'string'? Если вы используете 'string', то' unordered_list' будет корректно обрабатывать время жизни 'string'. Если вы используете 'string *', вам придется обрабатывать всю жизнь. Удостоверьтесь, что вы действительно получаете что-то от принятия этой задачи (управление жизненным циклом). –
Если вы нашли ответ на свой вопрос, нажмите кнопку «Проверить». :) Кроме того, учтите, что сказал Макс: вам нужно управлять этими сроками жизни вручную, что плохо. (Так что это нормально, если указатели не владеют.) Если они владеют, используйте 'shared_ptr' или' unique_ptr'. – GManNickG