在c++中使用unordered_map实现哈希表并处理冲突
Implementation of hash table using unordered_map in c++ and handling collisions
如何在c++中使用无序映射实现哈希映射。如果无序映射中的键对应于哈希函数生成的索引,当有多个值具有相同的键(冲突)时该怎么办?那么我们如何使用相同的键来访问这些值呢?
如
unordered_map <int,string> hashTable;
hashTable.insert(pair<int,string>(3,"ab"))
hashTable.insert(pair<int,string>(3,"ba"))
现在如何访问"ba"?
正如@amchacon指出的,std::unordered_map已经是一个哈希表了。
键和散列(key)是有区别的。在unordered_map中,键必须是不同的,而键的散列可能会冲突。仔细看看std::unordered_map的模板参数。这里有一个Hash和一个KeyEqual
如果您确实想使用相同的键有多个记录,请使用std::unordered_multimap。
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.";
}
相关文章:
- C++哈希表中,两个相同的实现,但一个给出错误
- 使用哈希表设置实现
- 实现具有浮点键的类似哈希表的数据结构,其中公差内的值被合并在一起
- 自定义哈希表实现-将字符串映射到整数时出现内存错误
- 实现将字符串映射到 C++ 中的数组的哈希表。我一直在"Debug Assertion Failed",我不知道为什么
- 如果我们使用链表数组来实现哈希表,则可以以不需要遍历的方式实现"add"。这是真的还是假的?
- 使用链哈希实现动态哈希表
- 在C++中实现哈希表(插入和延迟删除)
- 如何用tbb实现一个将键映射到不同类型值的并发哈希表
- 如何实现哈希表的擦除函数
- 标准库在实践中如何实现哈希表
- 使用链表数组实现哈希表
- 实现哈希表(rehash范围错误)
- 如何实现一个具有2个键的哈希表
- 多索引哈希表实现
- 哈希表实现大小调整功能
- 为什么python的字典是作为哈希表实现的,而std::map是基于树的?
- 为什么c++标准库不包含哈希表实现
- 如何使用模板类的模板类子类从哈希表实现哈希集
- 哈希表实现,集合的零冲突?发人深思的东西