采用for_each实现输出打印
时间: 2023-12-16 16:03:00 浏览: 43
可以使用`std::for_each`算法来遍历一个容器,并在每个元素上执行一个指定的操作。以下是一个示例代码,演示了如何使用`std::for_each`来输出打印一个`std::vector`容器中的元素:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {1, 2, 3, 4, 5};
// 使用 lambda 表达式打印每个元素
std::for_each(v.begin(), v.end(), [](int i){ std::cout << i << ' '; });
// 输出: 1 2 3 4 5
std::cout << std::endl;
return 0;
}
```
在这个例子中,使用了一个lambda表达式来打印每个元素。`std::for_each`算法将这个lambda表达式作为第三个参数,然后遍历整个容器,并在每个元素上执行lambda表达式,从而实现了输出打印的功能。
相关问题
map可以用for_each打印吗
是的,你可以使用 `std::for_each` 算法来遍历和打印 `std::map` 容器中的元素。以下是一个示例代码:
```cpp
#include <iostream>
#include <map>
#include <algorithm>
int main() {
std::map<int, std::string> my_map = {{1, "one"}, {2, "two"}, {3, "three"}};
// 使用 for_each 算法遍历 map 中的元素并打印
std::for_each(my_map.begin(), my_map.end(), [](const auto& element) {
std::cout << element.first << " => " << element.second << std::endl;
});
return 0;
}
```
上述代码会输出以下内容:
```
1 => one
2 => two
3 => three
```
这里我们使用了一个 lambda 表达式作为 `for_each` 算法的第三个参数,该 lambda 表达式接收 `std::pair<int, std::string>` 类型的参数,即 `std::map` 容器中的一个元素,然后打印出该元素的键和值。
set.for_each
set.for_each是C++ STL中的一个函数,它用于对set容器中的每个元素执行指定的操作。这个函数接受一个函数对象(或者可以被函数对象构造的lambda表达式),并将其应用于set中的每个元素。
下面是一个示例代码,演示了如何使用set.for_each函数:
```cpp
#include <iostream>
#include <set>
#include <algorithm>
void printElement(int element) {
std::cout << element << " ";
}
int main() {
std::set<int> mySet = {1, 2, 3, 4, 5};
// 使用for_each打印每个元素
std::for_each(mySet.begin(), mySet.end(), printElement);
return 0;
}
```
运行上面的代码,输出将会是:1 2 3 4 5。在这个例子中,我们定义了一个printElement函数,它接受一个整数并打印它。然后我们使用std::for_each函数将printElement应用于mySet中的每个元素,实现了对每个元素的打印操作。
希望这个例子能够帮助你理解set.for_each的用法。如果有任何疑问,请随时提问。