c++ 怎么使用哈希表
时间: 2024-09-19 10:18:21 浏览: 35
在C++中,标准库`std::unordered_map`和`std::unordered_set`提供了内置的哈希表支持,它们底层使用了哈希表数据结构。以下是基本的使用方法:
**使用`std::unordered_map`(关联容器)的例子:**
```cpp
#include <unordered_map>
#include <string>
// 创建一个空的无序地图,键是字符串,值是整数
std::unordered_map<std::string, int> myMap;
// 添加元素
myMap["apple"] = 1;
myMap["banana"] = 2;
// 访问元素
int countApples = myMap["apple"]; // 获取"apple"对应的值
// 如果元素不存在,会抛出异常
int invalidKey = myMap["orange"]; // 这里会报错,因为"orange"未被添加
// 删除元素
myMap.erase("banana"); // 删除键为"banana"的项
```
**使用`std::unordered_set`(集合容器)的例子:**
```cpp
#include <unordered_set>
#include <string>
std::unordered_set<std::string> fruits;
fruits.insert("apple");
fruits.insert("banana");
bool containsBanana = fruits.find("banana") != fruits.end(); // 检查是否包含"banana"
// 自动处理重复元素
fruits.insert("apple"); // "apple"不会再次插入,因为它已经存在
```
需要注意的是,在使用过程中,你需要确保键的哈希函数能够均匀分布,并避免哈希碰撞。如果性能需求高,可以考虑自定义哈希函数和比较运算符。