📅  最后修改于: 2023-12-03 14:39:52.396000             🧑  作者: Mango
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 对象的哈希函数对象,并返回该哈希函数对象,这个哈希函数对象定义了如何将键映射到哈希表中的桶中。使用哈希函数对象可以计算键的哈希值。