U532918 hash算法
题目背景
### 由于hash算法是个算法,所以必须介绍一下
题目描述
在 C++ 中,哈希算法是一种将任意长度的数据映射到固定长度值(哈希值)的技术,广泛用于高效的数据存储和检索(如哈希表)。以下是 C++ 中哈希算法的核心内容和使用方法:
---
### 一、哈希算法的核心用途
1. **快速查找**
- 哈希表(如 `unordered_map`、`unordered_set`)通过哈希值直接定位数据,平均时间复杂度为 **O(1)**。
2. **数据唯一性校验**
- 如检测文件内容是否重复(通过哈希值比较)。
3. **加密与安全**
- 哈希用于密码存储、数字签名(需结合加密算法如 SHA-256)。
---
### 二、C++ 中的哈希容器
#### 1. `std::unordered_map` 和 `std::unordered_set`
- **底层实现**:哈希表(链地址法解决冲突)。
- **特点**:
- 插入、删除、查找平均 O(1),最坏 O(n)(哈希冲突严重时)。
- 无序存储(与 `map`/`set` 的有序红黑树不同)。
```cpp
#include
#include
std::unordered_map word_count;
word_count["apple"] = 5; // 插入
int count = word_count["apple"]; // 查找
```
---
#### 2. 哈希函数(Hash Function)
- **默认支持类型**:C++ 标准库为基本类型(`int`、`string` 等)提供了默认哈希函数。
- **自定义类型哈希**:需手动实现哈希函数和相等比较。
```cpp
#include
struct Point {
int x, y;
};
// 自定义哈希函数
struct PointHash {
size_t operator()(const Point& p) const {
return std::hash()(p.x) ^ (std::hash()(p.y)
输入格式
看懂输出:`我看懂了`
输出格式
输出:`我看懂了`