unordered_map中用户定义类型的更好的散列函数

时间:2014-03-12 18:48:12

标签: c++ stl unordered-map

我为我的情况定义了以下哈希函数,其中作为键我有两个整数。这是我的代码:

typedef std::tuple<int, int> key_t;
struct KeyHasher
{
  std::size_t operator()(const key_t& k) const
  {
    using std::size_t;
    using std::hash;


    return ((hash<int>()(std::get<0>(k))
             ^ (hash<int>()(std::get<1>(k)) << 1)));
  }
};

我希望结果在使用键搜索时更快,但执行时间似乎非常慢。如果我可以为我的无序地图制作这个散列函数比上面的更好,请指导我。(我有超过2000000个条目)

P.S:我必须创建另一个带有两个无符号字符的unordered_map作为键。我可以为它们定义相同类型的哈希函数,并将类型更改为unsigned char吗?

0 个答案:

没有答案