hash function的形式

两种形式
-
成员函数型(仿函数)
-
直接以仿函数类名作为模板参数

-
非成员函数型
-
传入函数指针类型作为模板参数

万用的hash function实现——可变模板参数

<aside>
💡
使用可变参数模板接受任意数量的实参
</aside>
- 调用过程中除了参数包还有个种子(seed)
- seed在每次递归中都调用hash_combine变化自身
- 递归结束后获得的seed即是计算结果的hash code
- hash_combine对参数包中的参数调用它对应类型的std::hash,再做一系列运算
- 0x9e3779b9为一个黄金比例数字
- 目的是使得hash function的结果尽可能随机
以偏特化形式实现hash function

实现一系列偏特化版本的hash<T>
- 为自己需要进行hash的类型写一个偏特化版本的hash<T>