unordered_map自定义hash
时间: 2023-08-26 20:17:48 浏览: 96
unordered-map的使用方法.rar
当你使用`unordered_map`时,如果你想自定义键的哈希函数,可以通过提供自己的哈希函数对象来实现。下面是一个示例:
```cpp
#include <iostream>
#include <unordered_map>
#include <functional>
// 自定义哈希函数对象
struct MyHashFunction {
std::size_t operator()(const std::string& str) const {
std::size_t hash = 0;
for (char c : str) {
hash += c;
}
return hash;
}
};
int main() {
std::unordered_map<std::string, int, MyHashFunction> myMap;
myMap["apple"] = 5;
myMap["banana"] = 2;
myMap["orange"] = 8;
std::cout << "apple: " << myMap["apple"] << std::endl;
std::cout << "banana: " << myMap["banana"] << std::endl;
std::cout << "orange: " << myMap["orange"] << std::endl;
return 0;
}
```
在上述示例中,我们定义了一个名为`MyHashFunction`的结构体,其中重载了圆括号运算符`operator()`,用于计算字符串的哈希值。然后,我们在声明`unordered_map`时将`MyHashFunction`作为第三个模板参数传入。
在这个示例中,我们将字符串的哈希值定义为字符ASCII码的总和。
阅读全文