unordered_map在c++中是什么
时间: 2024-10-18 15:11:13 浏览: 27
`unordered_map`是C++标准模板库(STL)中的一个关联容器,它实现了哈希表数据结构[^1]。它的主要特点是通过哈希函数快速查找元素,使得插入、删除和查找操作的时间复杂度通常接近O(1),这对于大量数据的操作非常高效。unordered_map的关键特性包括:
1. 使用哈希函数(_Hash)将键(_Key)映射到桶(_Bucket)中,减少了查找时间。
2. 每个桶中存储一个关联数组,其中键值对以`std::pair<const _Key, _Tp>`的形式存在,`const`确保键不可变。
3. 提供了自定义哈希函数和比较器(_Pred),允许用户控制元素的分布和匹配。
`unordered_map`与`map`的主要区别在于:
- `map`依赖于红黑树实现,保证元素有序,而`unordered_map`不保证顺序。
- `unordered_map`的查找速度通常更快,但插入和删除元素时可能会有冲突导致重新哈希,这可能导致性能下降。
示例代码展示如何创建并访问`unordered_map`:
```cpp
#include <unordered_map>
#include <string>
int main() {
// 创建一个无序映射,键为字符串,值为整数
std::unordered_map<std::string, int> myMap;
// 插入元素
myMap["apple"] = 1;
myMap["banana"] = 2;
// 查找元素
if (myMap.find("apple") != myMap.end()) {
int count = myMap["apple"];
std::cout << "Apple count: " << count << "\n"; // 输出: Apple count: 1
}
return 0;
}
```
阅读全文