使用C++11新特性遍历map容器并删除元素
时间: 2024-03-10 13:49:57 浏览: 23
在C++11中,我们可以使用range-based for循环结合C++11新特性auto和lambda表达式来遍历map容器并删除元素。以下是一个示例代码:
```
#include <iostream>
#include <map>
int main(){
std::map<std::string, int> myMap = {
{"apple", 5},
{"banana", 3},
{"pear", 2}
};
// 使用 range-based for 循环遍历 map
for(auto it = myMap.begin(); it != myMap.end();)
{
// 使用 lambda 表达式判断是否需要删除元素
if(it->second == 3)
{
it = myMap.erase(it);
}
else
{
++it;
}
}
// 输出删除后的 map
for(auto& [key, value] : myMap)
{
std::cout << key << " => " << value << std::endl;
}
return 0;
}
```
在这个代码中,我们使用了一个迭代器`it`来遍历map容器,使用lambda表达式判断是否需要删除元素。具体地,我们使用`it->second`访问当前元素的值,如果值为3,则使用`myMap.erase(it)`删除当前元素,并将迭代器指向下一个元素。否则,我们只是将迭代器指向下一个元素。
在删除元素后,我们使用range-based for循环遍历map容器并输出剩余的元素。
希望这个示例代码能够帮助您了解如何使用C++11新特性遍历map容器并删除元素。