std::map遍历
时间: 2023-09-16 17:15:12 浏览: 54
你可以使用迭代器来遍历`std::map`。下面是一个示例代码:
```cpp
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap;
myMap[1] = "Apple";
myMap[2] = "Banana";
myMap[3] = "Orange";
// 使用迭代器遍历map
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
}
return 0;
}
```
这段代码创建了一个`std::map`,将一些水果与对应的整数键关联起来。然后,使用一个迭代器从`myMap.begin()`开始迭代,直到`myMap.end()`结束。在循环中,通过`it->first`和`it->second`访问键和值,并打印输出。
运行上面的代码,你将看到类似以下的输出:
```
Key: 1, Value: Apple
Key: 2, Value: Banana
Key: 3, Value: Orange
```
希望能帮到你!如果有任何其他问题,请随时问我。
相关问题
std::map 遍历
遍历 std::map 可以使用迭代器,示例代码如下:
```c++
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};
// 使用迭代器遍历
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << it->first << ": " << it->second << std::endl;
}
return 0;
}
```
输出结果为:
```
1: one
2: two
3: three
```
std::map遍历删除
在使用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)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.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)