在 C++ 中,对于每个无序关联容器(如unordered_map
、unordered_set
、unordered_multimap
),我们需要定义一个哈希函数。正如维基百科所指出的,
struct X{int i,j,k;};
struct hash_X{
size_t operator()(const X &x) const{
return hash<int>()(x.i) ^ hash<int>()(x.j) ^ hash<int>()(x.k);
}
};
struct hash_X
是 的自定义散列函数struct X
。但是这个函数有什么作用呢?为什么我们需要哈希函数?可以有任何其他类型的自定义散列函数吗?如果是这样,我们如何比较任何两个这样的功能之间的效率。