哈希表(散列表)详解及 C++ 实现 - std::unordered_map
哈希表(Hash Table),也被称为散列表,是一种用于存储键值对的数据结构。哈希表通过将键映射到一个索引来实现高效的插入、查找和删除操作。
哈希表的基本思想是利用哈希函数将键映射到一个索引位置,然后将值存储在该索引位置上。当需要查找或删除值时,通过相同的哈希函数计算键的索引,并在该索引位置上进行操作。哈希函数应该能够将不同的键映射到不同的索引,并尽可能均匀地分布键,以避免冲突。
在 C++ 中,可以使用 std::unordered_map 来实现哈希表。std::unordered_map 是 C++ 标准库中提供的哈希表容器,它提供了插入、查找和删除操作,并具有平均时间复杂度为 O(1)。
以下是一个使用 std::unordered_map 的示例:
#include <iostream>
#include <unordered_map>
#include <string>
int main() {
std::unordered_map<std::string, int> myMap;
// 插入键值对
myMap['one'] = 1;
myMap['two'] = 2;
myMap['three'] = 3;
// 查找键值对
std::cout << 'Value of key 'two': ' << myMap['two'] << std::endl;
// 删除键值对
myMap.erase('three');
// 遍历哈希表
for (const auto& kvp : myMap) {
std::cout << 'Key: ' << kvp.first << ', Value: ' << kvp.second << std::endl;
}
return 0;
}
在上述示例中,我们创建了一个 std::unordered_map 类型的哈希表 myMap,并向其中插入了几个键值对。通过使用键访问值,我们可以查找特定键的值,并使用 erase 函数删除键值对。最后,我们使用范围循环遍历了哈希表中的所有键值对。
请注意,std::unordered_map 并不保证元素的顺序,因为元素的顺序是根据哈希函数的计算结果决定的。如果你需要保持元素的顺序,可以考虑使用 std::map 容器,它是一个基于红黑树的关联容器,元素以有序方式存储。
原文地址: https://www.cveoy.top/t/topic/ie5 著作权归作者所有。请勿转载和采集!