list<map>集合移除指定map
时间: 2023-08-01 18:08:13 浏览: 136
List集合遍历和删除操作
如果你要移除指定的 `map` 对象,可以使用 `remove_if` 函数结合 lambda 表达式来实现。具体步骤如下:
1. 定义一个 lambda 表达式,用于判断每个 `map` 对象是否符合要求,如果符合则返回 `true`,否则返回 `false`。
2. 使用 `remove_if` 函数,将符合要求的 `map` 对象移动到集合的末尾,并返回指向新的结尾的迭代器。
3. 使用 `erase` 函数,删除从新的结尾到原始结尾的所有元素,即删除符合要求的 `map` 对象。
下面是示例代码:
```c++
#include <iostream>
#include <list>
#include <map>
int main() {
std::list<std::map<int, std::string>> my_list = {
{{1, "one"}, {2, "two"}},
{{3, "three"}, {4, "four"}},
{{5, "five"}, {6, "six"}}
};
// 移除 key 为 3 的 map 对象
int key_to_remove = 3;
auto lambda = [key_to_remove](const std::map<int, std::string>& m) {
return m.count(key_to_remove) > 0;
};
my_list.erase(
std::remove_if(my_list.begin(), my_list.end(), lambda),
my_list.end());
// 输出移除后的集合
for (const auto& m : my_list) {
for (const auto& [k, v] : m) {
std::cout << k << ": " << v << std::endl;
}
}
return 0;
}
```
输出结果为:
```
1: one
2: two
5: five
6: six
```
阅读全文