unordered_map是什么,基本用法与含义是什么
时间: 2024-10-29 14:13:03 浏览: 12
unordered_map_
`unordered_map` 是 C++ 标准库中的一个关联容器,它是基于哈希表实现的。它存储的是键值对,提供快速查找(平均时间复杂度为 O(1))的能力,特别适用于需要频繁插入、删除和查找操作的情况,因为哈希表通过哈希函数直接定位内存位置,大大提高了效率。
基本用法包括:
1. **创建和初始化**:
```cpp
std::unordered_map<Key, Value> myMap;
```
或者使用初始容量和负载因子:
```cpp
std::unordered_map<Key, Value, HashFunction, KeyEqual, Allocator> myMap(initial_capacity, load_factor, hash_function, key_equal, allocator);
```
其中,`Key` 和 `Value` 分别代表键和值的类型,`HashFunction` 是自定义的哈希函数,`KeyEqual` 是比较键是否相等的谓词,`Allocator` 是分配内存的策略。
2. **插入元素**:
```cpp
myMap.insert(std::make_pair(key, value));
```
或者:
```cpp
myMap[key] = value;
```
3. **访问元素**:
```cpp
Value v = myMap[key];
```
4. **查找元素**:
```cpp
if (myMap.find(key) != myMap.end()) {
// key存在,可以获取value
}
```
5. **删除元素**:
```cpp
myMap.erase(key);
```
6. **迭代遍历**:
```cpp
for (const auto& pair : myMap) {
Key k = pair.first;
Value v = pair.second;
// do something with k and v
}
```
`unordered_map` 的核心特性在于它的查找速度极快,但在最坏的情况下(当哈希冲突严重时),性能会退化到 O(n),因此在设计算法时需要权衡空间和时间的需求。由于它内部是无序的,所以并不保证元素的顺序与插入顺序一致。
阅读全文