std::unordered_set
не соответствует требованию быть элементом из std::unordered_set
, поскольку не существует хэш-функции по умолчанию (т. е. std::hash<>
не специализируется на std::unordered_set
).
вы можете (он должен быть быстрым и избегать столкновений как можно больше):
class MyHash
{
public:
std::size_t operator()(const std::unordered_set& s) const
{
return ... // return some meaningful hash of the et elements
}
};
int main() {
std::unordered_set, MyHash> u;
}
Вы можете увидеть очень хорошие примеры хеш-функций в этом ответе .
Вы действительно должны предоставить как функцию Хэша и Равенства, удовлетворяющую стандартным требованиям неупорядоченного ассоциативного контейнера.