在c ++中使用unordered_map并处理冲突的哈希表的实现

时间:2016-10-11 14:00:44

标签: c++ hash stl hashmap unordered-map

如何在c ++中使用无序映射实现哈希映射。 如果无序映射中的键对应于散列函数生成的索引, 什么时候有多个值有相同的键(碰撞)。那么我们如何使用相同的键访问这些值。

例如

Exec('reg.exe', 'import C:\Support\Banners.reg', '', SW_HIDE, ewWaitUntilTerminated, Code);

现在如何访问" ba"?

2 个答案:

答案 0 :(得分:4)

正如@amchacon指出的那样,std :: unordered_map已经是一个哈希表。

密钥和散列(密钥)之间存在差异。在unordered_map中,键必须是不同的,而键的哈希可能会发生冲突。仔细查看std::unordered_map的模板参数。有一个Hash,还有一个KeyEqual。

如果您确实想要使用相同的密钥创建多个记录,请改用std::unordered_multimap

答案 1 :(得分:0)

hashTable[3]实际上是“ba”。

你可以搜索它。

auto it = hashTable.find(3);
if(it!=hashTable.end()){
   std::cout << "item found" << it->second << "\n";
}else{
   std::cout << "item does not exists in table.";
}