如何在c ++中使用无序映射实现哈希映射。 如果无序映射中的键对应于散列函数生成的索引, 什么时候有多个值有相同的键(碰撞)。那么我们如何使用相同的键访问这些值。
例如
Exec('reg.exe', 'import C:\Support\Banners.reg', '', SW_HIDE, ewWaitUntilTerminated, Code);
现在如何访问" ba"?
答案 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.";
}