c++自定义unordered_map的哈希函数
时间: 2024-04-06 19:26:52 浏览: 182
在C++中,可以通过自定义哈希函数来为unordered_map提供自定义的键值对哈希算法。下面是一个简单的示例:
```cpp
#include <iostream>
#include <unordered_map>
// 自定义哈希函数
struct MyHashFunc {
std::size_t operator()(const std::string& key) const {
// 自定义哈希算法,这里使用简单的ASCII码之和作为哈希值
std::size_t hashValue = 0;
for (char c : key) {
hashValue += static_cast<std::size_t>(c);
}
return hashValue;
}
};
int main() {
// 使用自定义哈希函数创建unordered_map
std::unordered_map<std::string, int, MyHashFunc> myMap;
// 添加键值对
myMap["apple"] = 1;
myMap["banana"] = 2;
myMap["cherry"] = 3;
// 访问键值对
std::cout << "The value of 'apple' is: " << myMap["apple"] << std::endl;
return 0;
}
```
在上述示例中,我们定义了一个名为`MyHashFunc`的结构体,重载了`operator()`运算符,该运算符接受一个`std::string`类型的参数,并返回一个`std::size_t`类型的哈希值。在这个自定义的哈希函数中,我们使用了简单的ASCII码之和作为哈希值。
然后,我们使用`MyHashFunc`作为unordered_map的第三个模板参数来创建了一个自定义的unordered_map对象`myMap`。我们可以像使用普通的unordered_map一样,通过键来访问和操作键值对。
阅读全文