c++容器哈希表的插入
时间: 2023-11-11 11:57:49 浏览: 40
c++容器中的哈希表是通过vector实现的。在插入元素时,先检查是否需要扩容,如果需要,就创建一个新的HashTable进行扩容,并将原HashTable中的元素重新映射到新表中,最后通过vector的swap函数交换两个表的vector。然后再通过哈希函数找到插入位置,如果该位置已经被占用,则继续往后找,直到找到空的位置为止。插入元素时,还需要判断该元素在哈希表中是否已经存在,如果存在则直接返回false,否则将该元素插入到哈希表中。字符串在哈希表中的处理方式是取出每一个字符并将其相加得到一个整形key进行比较。
相关问题
C++ 哈希表使用方法
C++中可以使用STL中的unordered_map来实现哈希表,下面是使用方法:
1. 头文件包含
```c++
#include <unordered_map>
```
2. 定义哈希表
```c++
std::unordered_map<key_type, value_type> my_map;
```
其中,key_type为键的类型,可以是整型、字符型等等;value_type为值的类型,可以是整型、字符型、自定义结构体等等。
3. 插入元素
```c++
my_map.insert(std::make_pair(key, value));
```
其中,key为键,value为值。
4. 查找元素
```c++
auto it = my_map.find(key);
if(it != my_map.end()){
//找到了
value = it->second;
}
else{
//未找到
}
```
其中,it为迭代器,可以通过it->second获取对应的值。如果未找到,则it等于my_map.end()。
5. 删除元素
```c++
my_map.erase(key);
```
其中,key为要删除的元素对应的键。
哈希表的使用方法就介绍到这里,需要注意的是,哈希表的元素是无序的,如果需要有序,则可以考虑使用map容器。
c++哈希表快速查找
C++中可以使用标准库中的`unordered_map`实现哈希表快速查找。`unordered_map`是一个关联容器,使用哈希表实现,支持快速插入、查找和删除操作。
使用方法如下:
```c++
#include <unordered_map>
#include <string>
using namespace std;
int main() {
unordered_map<string, int> myMap; // 创建一个<string, int>类型的unordered_map
myMap["apple"] = 10; // 插入键值对
myMap["banana"] = 20;
myMap["orange"] = 30;
cout << myMap["apple"] << endl; // 通过键查找值
cout << myMap["banana"] << endl;
cout << myMap["orange"] << endl;
return 0;
}
```
输出:
```
10
20
30
```
需要注意的是,`unordered_map`中的键值对是无序的,插入和查找操作的时间复杂度为O(1)。