遍历std::map
时间: 2024-08-01 11:01:41 浏览: 73
C++11 unordered_map与map(插入,遍历,Find)效率对比。
在C++中,`std::map` 是一种关联容器,它存储了键值对,每个键都是唯一的。遍历 `std::map` 主要有两种方式:
1. **迭代器遍历**:
使用 `begin()` 和 `end()` 函数获取迭代器,然后通过循环逐个处理元素。示例:
```cpp
std::map<std::string, int> myMap;
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
}
```
迭代器 `it->first` 指向键,`it->second` 指向对应的值。
2. **反向迭代器遍历**:
类似于前一种方式,但使用 `rbegin()` 和 `rend()` 获取反向迭代器,从后向前遍历:
```cpp
for (auto rit = myMap.rbegin(); rit != myMap.rend(); ++rit) {
std::cout << "Key: " << rit->first << ", Value: " << rit->second << std::endl;
}
```
3. **查找并更新(如果允许)**:
如果需要在遍历时修改元素,可以使用 `map[key]` 来找到对应的值并进行更新(前提是键存在):
```cpp
if (myMap.find("key") != myMap.end()) {
myMap["key"] = new_value;
}
```
注意,`std::map` 的迭代顺序通常是按照插入顺序排列的,但不是线性的,因为它是基于红黑树数据结构实现的,所以并不是严格的从头到尾排序。
阅读全文