std::map遍历 c++17
时间: 2024-03-06 11:44:58 浏览: 126
在C++17中,可以使用范围for循环来遍历std::map容器。std::map是一个关联容器,它按照键值对的方式存储数据,并且按照键的顺序进行排序。
以下是使用范围for循环遍历std::map的示例代码:
```cpp
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap = {{1, "apple"}, {2, "banana"}, {3, "orange"}};
for (const auto& pair : myMap) {
std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
}
return 0;
}
```
上述代码中,我们创建了一个std::map对象myMap,并初始化了一些键值对。然后,使用范围for循环遍历myMap,通过pair.first获取键,通过pair.second获取值,并输出到控制台。
相关问题
std::map的遍历
`std::map`是C++标准库中的关联容器,它内部使用红黑树实现,提供了按键值有序访问元素的功能。遍历`std::map`主要有三种方式:
1. 遍历所有元素:你可以使用`begin()`和`end()`函数生成迭代器范围,然后逐个迭代每个元素。例如:
```cpp
for (const auto& pair : my_map) {
// pair.first 是键,pair.second 是对应的值
}
```
2. 使用迭代器:可以直接使用迭代器进行迭代,比如前驱迭代器`prev`和后继迭代器`next`:
```cpp
for (auto it = my_map.begin(); it != my_map.end(); ++it) {
// it->first 和 it->second
}
```
3. 使用`find()`查找特定键:如果只需要特定键的元素,可以使用`find()`方法找到,返回指向该元素的迭代器,如果没有则返回结束迭代器。
```cpp
auto iter = my_map.find(key);
if (iter != my_map.end()) {
// 对于找到的键值对操作
}
```
std::map<std::string, std::string> 遍历
可以使用迭代器来遍历std::map<std::string, std::string>。以下是一个简单的示例代码:
```c++
#include <iostream>
#include <map>
#include <string>
int main() {
std::map<std::string, std::string> myMap = {{"key1", "value1"}, {"key2", "value2"}};
// 使用迭代器遍历map
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
}
return 0;
}
```
输出结果:
```
Key: key1, Value: value1
Key: key2, Value: value2
```
在这个示例中,我们使用了auto关键字来自动推断迭代器的类型。然后,我们使用begin()和end()函数来获取map的起始和结束迭代器。在循环中,我们使用迭代器的first和second成员来访问键和值。
阅读全文