我试图为两个原始类型的 std::pair 找出一个好的散列函数。这是我现在实施的方式:
template<typename T, typename U>
std::size_t operator()(const std::pair<T,U> &rhs) const
{
return stdext::hash_value<T>(rhs.first) ^ stdext::hash_value<U>(rhs.second);
}
即使我有两对,例如 (1, 2) 和 (2, 1) (数字翻转),它似乎也能工作。它们生成相同的哈希值,但这些值仍然成功插入到哈希映射中。有什么想法吗?