C++ Hashtable如何自定义哈希函数

   2024-10-06 9620
核心提示:要自定义哈希函数,需要实现一个哈希函数对象,并将其作为模板参数传递给unordered_map或unordered_set。以下是一个简单的示例:

要自定义哈希函数,需要实现一个哈希函数对象,并将其作为模板参数传递给unordered_map或unordered_set。以下是一个简单的示例:

#include <iostream>#include <unordered_map>#include <string>struct MyHashFunction {    std::size_t operator()(const std::string& str) const {        // 自定义哈希函数,这里简单地返回字符串长度作为哈希值        return str.length();    }};int main() {    std::unordered_map<std::string, int, MyHashFunction> myMap;    myMap["apple"] = 5;    myMap["banana"] = 10;    std::cout << "apple: " << myMap["apple"] << std::endl;    std::cout << "banana: " << myMap["banana"] << std::endl;    return 0;}

在上面的示例中,我们定义了一个名为MyHashFunction的结构体,重载了operator()函数来自定义哈希函数。然后在创建unordered_map时,将MyHashFunction作为第三个模板参数传递给unordered_map,这样就可以使用自定义的哈希函数来计算键的哈希值了。

当插入或查找键时,unordered_map会使用自定义的哈希函数来计算对应的哈希值,从而确定元素在哈希表中的位置。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号