unordered_map的哈希表建立
时间: 2023-10-20 07:32:29 浏览: 99
对于使用 C++ 的 unordered_map,可以通过自定义哈希函数来建立哈希表。
首先,需要包含 `<unordered_map>` 头文件以使用 unordered_map 容器。然后,可以使用以下语法来声明和初始化 unordered_map:
```cpp
#include <unordered_map>
int main() {
std::unordered_map<KeyType, ValueType> mapName;
// 添加元素
mapName[key] = value;
// 访问元素
ValueType val = mapName[key];
return 0;
}
```
其中,`KeyType` 是键类型,`ValueType` 是值类型。通过 `mapName[key]` 可以访问键为 `key` 的值,或者通过 `mapName.at(key)` 也可以访问。
要自定义哈希函数,可以使用 `std::hash` 模板。例如,如果要自定义一个哈希函数来处理自定义的结构体作为键类型,可以按照以下示例进行操作:
```cpp
#include <unordered_map>
struct CustomStruct {
// 自定义结构体
};
struct HashFunction {
std::size_t operator()(const CustomStruct& key) const {
// 自定义哈希函数的实现
// 返回哈希值
}
};
int main() {
std::unordered_map<CustomStruct, ValueType, HashFunction> mapName;
// 添加元素
mapName[key] = value;
// 访问元素
ValueType val = mapName[key];
return 0;
}
```
在上面的示例中,我们自定义了 `HashFunction` 结构体作为哈希函数,并将其作为 unordered_map 的模板参数传递。
需要注意的是,哈希函数应该返回一个合理的哈希值,以确保哈希表的性能和均匀分布。
阅读全文