C++ 哈希表如何找到键后,删除当前的键值对
时间: 2024-10-13 11:12:56 浏览: 25
在C++中,使用`unordered_map`或`unordered_set`作为哈希表时,删除键值对通常涉及到两个步骤:
1. 使用键查找对应的数据结构,`unordered_map`允许通过键直接访问存储项,而`unordered_set`则只存储键不存储值。
```cpp
// 对于unordered_map
auto it = my_hashmap.find(key);
if (it != my_hashmap.end()) {
// 找到了键,可以调用erase方法删除它
my_hashmap.erase(it);
}
// 对于unordered_set
auto it = my_unordered_set.find(key);
if (it != my_unordered_set.end()) {
my_unordered_set.erase(it);
}
```
2. 注意在`unordered_set`中,键不能有重复,所以删除一个键会自动移除所有相同的键。
如果你想要从`unordered_map`中删除值而不是键值对,可以先获取到值,然后删除与该值关联的键。
```cpp
// 假设my_hashmap的value类型支持比较
unordered_map<KeyType, ValueType> my_hashmap;
KeyType key_to_remove;
ValueType value_to_remove;
if (my_hashmap.count(key_to_remove) > 0) {
value_to_remove = my_hashmap[key_to_remove];
my_hashmap.erase(key_to_remove);
}
```
阅读全文