unordered_map erase it
时间: 2023-11-24 21:51:31 浏览: 147
unordered_map_
unordered_map提供了多种方法来删除元素,其中erase()方法是其中之一。erase()方法可以通过迭代器或键来删除元素。具体方法如下:
1. 通过迭代器删除元素
```c++
unordered_map<int, string> myMap = {{1, "apple"}, {2, "banana"}, {3, "orange"}};
auto it = myMap.find(2); // 找到键为2的元素的迭代器
if (it != myMap.end()) { // 如果找到了
myMap.erase(it); // 删除该元素
}
```
2. 通过键删除元素
```c++
unordered_map<int, string> myMap = {{1, "apple"}, {2, "banana"}, {3, "orange"}};
myMap.erase(2); // 删除键为2的元素
```
需要注意的是,如果要删除多个元素,可以在循环中使用erase()方法,但是需要注意迭代器失效的问题。可以使用迭代器的后缀++操作符来解决这个问题,具体方法如下:
```c++
unordered_map<int, string> myMap = {{1, "apple"}, {2, "banana"}, {3, "orange"}};
for (auto it = myMap.begin(); it != myMap.end(); ) {
if (it->first == 2) {
it = myMap.erase(it); // 删除元素,并将迭代器指向下一个元素
} else {
++it; // 将迭代器指向下一个元素
}
}
```
阅读全文