Это потому, что unordered_set использует шаблон std :: ha sh для вычисления ha sh для своих записей, а std :: ha sh для пар отсутствует. Вы должны определить пользовательский ha sh, чтобы использовать unordered_set.
struct vector_hash
{
template <class T1, class T2>
std::size_t operator () (std::pair<T1, T2> const &v) const
{
return std::hash<T1>()(v.size());
}
};
, а затем объявить свой unordered_set как -
std::unordered_set< vector<int>, vector_hash> set;
Эта функция ha sh не подходит. Это просто пример.