for_each处理函数传参
时间: 2023-07-30 20:09:07 浏览: 102
`for_each`是C++ STL中的一个算法函数,用于对容器中的每个元素执行同一个操作。其函数原型如下:
```cpp
template<class InputIt, class UnaryFunction>
UnaryFunction for_each(InputIt first, InputIt last, UnaryFunction f);
```
其中,`InputIt`是输入迭代器类型,表示要遍历的容器的起始和终止迭代器;`UnaryFunction`是函数对象类型,表示要执行的操作。
在调用`for_each`时,我们需要传入一个函数对象,这个函数对象接受一个参数,表示容器中的一个元素,函数对象对这个元素执行一些操作。
例如,我们可以定义一个函数对象,将容器中的每个元素乘以2,代码如下:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
struct MultiplyByTwo {
void operator()(int& n) const { n *= 2; }
};
int main() {
std::vector<int> v{1, 2, 3, 4, 5};
// 调用 for_each,将容器中的每个元素乘以2
std::for_each(v.begin(), v.end(), MultiplyByTwo());
for (int n : v) {
std::cout << n << ' ';
}
std::cout << '\n';
}
```
输出结果为:
```
2 4 6 8 10
```
在上面的例子中,我们定义了一个名为`MultiplyByTwo`的函数对象,它的`operator()`函数接受一个参数`n`,将`n`乘以2。我们将这个函数对象传给`for_each`,然后调用`for_each`处理容器中的每个元素。
阅读全文