Я просто был немного удивлен тем, что не могу просто использовать
std::unordered_set > test;
, потому что, похоже, нет специализация std :: hash
для std :: array
s. Это почему? Или я просто не нашел? Если его действительно нет, можно ли упростить следующую попытку реализации?
namespace std
{
template
struct hash >
{
typedef array argument_type;
typedef size_t result_type;
result_type operator()(const argument_type& a) const
{
hash hasher;
result_type h = 0;
for (result_type i = 0; i < N; ++i)
{
h = h * 31 + hasher(a[i]);
}
return h;
}
};
}
Я действительно считаю, что это каким-то образом должно быть частью стандартной библиотеки.