@Proshka17

Использование Hash в c++?

Добрый день! Я изучаю unordered_set и прочитал что для использования собственных классов в unordered_set нужно(как вариант) специализировать шаблон класса hash. По аналогии с тем, что я прочитал в интернете, я специализировал hash и получил:
template<>
class hash<OB> {
public:
  size_t operator() (const OB& obi) const{
    return hash<int>()(obi.num);
  }
};


Но мне не понятно почему нужно писать hash<int>()(obi.num);
а не hash<int>(obi.num);
Объясните пожалуйста в чем разница между этими вариантами
  • Вопрос задан
  • 1048 просмотров
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Первое — создать конструктором без параметров безымянный экземпляр класса и запустить ему операцию ().
Второе — либо создать безымянный экземпляр класса конструктором с одним параметром, либо запустить шаблонную функцию.

std::hash оформлено как struct, конструктор самый обычный, и есть операция () — потому первое.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы