std::map遍历删除
时间: 2023-10-24 12:05:36 浏览: 62
在使用std::map遍历删除时,需要注意以下几点:
1.不要在遍历过程中直接删除元素,因为这会导致迭代器失效,可能会导致程序崩溃。
2.可以使用一个临时迭代器来保存下一个元素的位置,然后再删除当前元素。
3.可以使用C++11中的auto关键字和范围for循环来遍历std::map,这样可以避免手动管理迭代器。
下面是一个使用临时迭代器的示例代码:
```
std::map<std::string, Node>::iterator it_map, tmp;
std::vector<std::string>::iterator it_list;
std::string node_name;
for (it_map = node_map->begin(); it_map != node_map->end();) {
node_name = it_map->first;
it_list = std::find(node_list.begin(), node_list.end(), node_name);
if (it_list != node_list.end()) {
tmp = ++it_map;
node_map->erase(--it_map);
it_map = tmp;
} else {
++it_map;
}
}
```
这里使用了一个临时迭代器tmp来保存下一个元素的位置,然后再删除当前元素。注意,在删除元素之前需要将it_map减1,以便正确指向当前元素。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)