std::map 使用for_each
时间: 2023-08-16 08:08:00 浏览: 161
你可以使用 `std::for_each` 算法来对 `std::map` 进行遍历。然而,由于 `std::map` 是一个关联容器,它的元素是按照键的顺序存储的,而不是按照插入顺序。因此,在遍历 `std::map` 时,元素的顺序可能与插入时的顺序不同。
下面是一个示例代码,展示了如何使用 `std::for_each` 遍历 `std::map`:
```cpp
#include <iostream>
#include <map>
#include <algorithm>
void printKeyValue(const std::pair<int, std::string>& keyValue) {
std::cout << "Key: " << keyValue.first << ", Value: " << keyValue.second << std::endl;
}
int main() {
std::map<int, std::string> myMap;
myMap.insert(std::make_pair(1, "One"));
myMap.insert(std::make_pair(2, "Two"));
myMap.insert(std::make_pair(3, "Three"));
std::for_each(myMap.begin(), myMap.end(), printKeyValue);
return 0;
}
```
这个示例中,我们定义了一个名为 `printKeyValue` 的函数,它接受一个键值对作为参数,并打印出键和值。然后,在 `main` 函数中,我们创建了一个 `std::map` 并插入了一些键值对。最后,我们使用 `std::for_each` 算法遍历 `myMap`,并将每个键值对传递给 `printKeyValue` 函数进行打印。
请注意,`std::for_each` 算法对每个元素都会调用指定的函数对象(或函数),但它并不能保证元素的遍历顺序与插入顺序一致。如果你需要按照特定顺序遍历 `std::map`,你可能需要使用其他方法,比如使用迭代器进行遍历。
阅读全文