哈希表c++
时间: 2023-07-04 12:27:23 浏览: 163
哈希表(Hash Table)是一种根据关键码值(Key-Value)直接进行访问的数据结构,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。在哈希表中,关键码值通过哈希函数映射到表中的位置,这个映射函数称为哈希函数。
C++ STL 中提供了哈希表的实现,具体的类为 `unordered_map`,它是一个关联容器,提供了类似于 map 的接口,但是底层用哈希表实现,因此查找速度比 map 快。使用 `unordered_map` 的方式很简单,只需要包含头文件 `<unordered_map>`,然后使用 `unordered_map<Key, Value>` 类定义一个哈希表即可。
例如,下面的代码定义了一个 `unordered_map`,其中 Key 的类型为字符串,Value 的类型为整数:
```c++
#include <unordered_map>
#include <iostream>
int main() {
std::unordered_map<std::string, int> myMap = {
{"apple", 1},
{"banana", 2},
{"orange", 3}
};
std::cout << "apple: " << myMap["apple"] << std::endl;
std::cout << "banana: " << myMap["banana"] << std::endl;
std::cout << "orange: " << myMap["orange"] << std::endl;
return 0;
}
```
输出结果为:
```
apple: 1
banana: 2
orange: 3
```
这个例子中,我们使用了一个初始化列表来初始化了一个 `unordered_map`,然后通过 `[]` 运算符访问其中的元素。如果要在哈希表中插入新的元素,可以使用 `insert` 函数,例如:
```c++
myMap.insert({"pear", 4});
```
这会在 `myMap` 中插入一个新的键值对 `("pear", 4)`。
需要注意的是,哈希表中的元素是无序的,因此不能使用下标来访问某个位置的元素。另外,由于哈希表的实现需要使用哈希函数,因此要保证所有的 Key 类型能够正确地计算哈希值。如果需要使用自定义类型作为 Key,需要提供一个自定义的哈希函数。
阅读全文