#include <iostream>
int main() {
std::hash<int> hash_f;
std::cout << hash_f(0) << std::endl;
std::cout << hash_f(1) << std::endl;
std::cout << hash_f(2) << std::endl;
std::cout << hash_f(3) << std::endl;
}
我用“g++ main.cpp -std=c++11”编译,然后结果是:
0
1
2
3
为什么会这样?我不使用任何库,也没有专门的散列函数。
附录:我想为 int 的 unordered_set 的 unordered_set 定义散列,其中集合的散列是其分量散列的总和,但如果它只是标识它并不酷,因为 {2,4} 的散列与{1,5} 的哈希值。避免这种情况的最简单方法可能是使用 std::hash 双精度函数。