#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
为什么会这样?我没有使用任何库,也没有专门的哈希函数。补充说明:我想为一个unordered_set的集合定义哈希值,其中一个集合的哈希值是其组成部分哈希值之和。但如果仅仅是标识,那就不够好了,因为{2,4}的哈希值与{1,5}的哈希值相同。避免这种情况最简单的方法可能是使用std :: hash双重函数。