📜  C++ STL中的unordered_multimap hash_function()(1)

📅  最后修改于: 2023-12-03 14:39:52.396000             🧑  作者: Mango

C++ STL 中的 unordered_multimap::hash_function()

介绍

unordered_multimap 是 C++ STL 中的一个哈希表容器,可以容纳具有相同哈希值的多个键值对。其 hash_function() 函数可以访问哈希函数对象,返回哈希函数对象,这个哈希函数对象定义了如何将键映射到哈希表中的桶中。

语法
hasher unordered_multimap::hash_function() const;
参数

返回值

返回一个哈希函数对象,这个哈希函数对象定义了如何将键映射到哈希表中的桶中。

示例
#include <iostream>
#include <unordered_map>
#include <string>

int main()
{
    std::unordered_multimap<std::string, int> um { {"apple", 10}, {"banana", 20}, {"apple", 30} };
    auto h = um.hash_function();
    std::cout << h("apple") << '\n'; // 输出 437239
    std::cout << h("banana") << '\n'; // 输出 6546903
}
解释

在上面的示例中,我们首先创建了一个 unordered_multimap 对象 um,并向其添加了三个键值对。然后使用 hash_function() 函数获取 um 对象的哈希函数对象,并将它赋值给变量 h。最后分别使用哈希函数对象 h 计算键 "apple" 和 "banana" 的哈希值,并输出。

注意事项
  • unordered_multimap 对象在创建时必须提供一个哈希函数对象,否则无法工作。

  • 哈希函数对象只需定义一个 () 运算符即可。

  • 哈希函数对象应该足够散列(大约为随机),但不需要是完全散列(对每对键都产生唯一哈希值)。

  • 哈希函数对象产生的哈希值应该与元素的键的所有位无关,因此哈希函数对象的输出不应受到平台字节序或指针大小的影响。

总结

unordered_multimap::hash_function() 函数可以访问 unordered_multimap 对象的哈希函数对象,并返回该哈希函数对象,这个哈希函数对象定义了如何将键映射到哈希表中的桶中。使用哈希函数对象可以计算键的哈希值。