Запрос разрешения для камеры и библиотеки в iOS 10 - Info.plist

Что вам нужно сделать, так это определить соответствующий хеш для ключей типа std::unordered_set (поскольку operator== уже уже определен для этого ключа, вам не нужно будет также предоставлять EqualKey для параметра std::unordered_set, Hash, EqualKey>.

Один простой (хотя и неэффективный) вариант - это хеш на общую сумму всех элементов набора. Это будет выглядеть примерно так:

template
struct hash_on_sum
: private std::hash
{
  typedef T::element_type count_type;
  typedef std::hash base;
  std::size_t operator()(T const&obj) const
  {
    return base::operator()(std::accumulate(obj.begin(),obj.end(),count_type()));
  }
};

typedef std::unordered_set inner_type;
typedef std::unordered_set> set_of_unique_sets;

Однако, хотя это просто, это не хорошо, поскольку это не гарантирует следующее требование. Для двух разных параметров k1 и k2, которые не равны, вероятность того, что std::hash()(k1) == std::hash()(k2) должна быть очень малой, приближается к 1.0/std::numeric_limits::max().

63
задан Kirit Modi 22 September 2016 в 10:25
поделиться