std map erase
时间: 2024-02-11 08:02:57 浏览: 21
以下是两种使用std::map的高效删除的方法:
1. 使用std::remove_if和erase组合的方法:
```c++
std::map<int, int> myMap;
// ...
int v = 10; // 要删除的值
myMap.erase(std::remove_if(myMap.begin(), myMap.end(), [&](const std::pair<int, int>& p) { return p.second == v; }), myMap.end());
```
这种方法使用了remove_if算法来找到要删除的元素,并将其移到容器的末尾,然后使用erase方法将这些元素从容器中删除。
2. 直接使用erase方法删除指定的键值对:
```c++
std::map<int, int> myMap;
// ...
int k = 5; // 要删除的键
myMap.erase(k);
```
这种方法直接使用erase方法删除指定的键值对。
相关问题
c++ map erase函数
C++中的map是一种关联式容器,它提供了一种将键映射到值的方法。erase()函数是map容器中的一个成员函数,用于删除map中的元素。以下是erase()函数的使用方法和示例:
1. erase()函数的使用方法:
```c++
map.erase(key); // 删除map中键为key的元素
map.erase(iterator); // 删除迭代器指向的元素
map.erase(first, last); // 删除[first, last)区间内的所有元素
```
2. erase()函数的示例:
```c++
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, int> b;
b[1] = 5;
b[2] = 6;
b[3] = 7;
b[4] = 8;
// 删除键为2的元素
b.erase(2);
// 删除键为奇数的元素
for (auto iter = b.begin(); iter != b.end();) {
if (iter->first % 2 == 1) {
iter = b.erase(iter);
} else {
++iter;
}
}
// 输出剩余元素
for (auto x : b) {
cout << x.first << " " << x.second << endl;
}
return 0;
}
```
输出结果为:
```
4 8
```
c++获取map erase
在 C++ 中,可以使用 map 的 erase() 函数来删除 map 中的元素。erase() 函数有多个重载版本,其中一种常见的用法是传入要删除元素的键值作为参数。例如,以下代码可以删除名为 mymap 的 map 中键值为 "key_to_delete" 的元素:
```
std::map<std::string, int> mymap;
mymap["key_to_delete"] = 42;
// 删除键值为 "key_to_delete" 的元素
mymap.erase("key_to_delete");
```
需要注意的是,如果要删除的键值不存在于 map 中,调用 erase() 函数不会产生任何效果。另外,erase() 函数返回一个迭代器,指向被删除元素的下一个元素。如果要删除多个元素,可以使用迭代器来循环调用 erase() 函数。