c++ 高阶函数
时间: 2023-08-03 14:11:45 浏览: 72
在 C++ 中,函数也可以作为参数传递给另一个函数,这种函数称为高阶函数。高阶函数允许我们编写更加灵活且可重用的代码。
以下是一个简单的示例,其中 `map` 函数接受一个函数和一个数组,并返回一个新数组,其中每个元素都是原数组元素应用给定函数后的结果:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 定义一个高阶函数 map
template<typename T, typename Func>
vector<T> map(vector<T> v, Func f) {
vector<T> result;
result.reserve(v.size());
transform(v.begin(), v.end(), back_inserter(result), f);
return result;
}
int main() {
vector<int> v = {1, 2, 3, 4, 5};
// 将每个元素都乘以 2
auto doubled = map(v, [](int x) { return x * 2; });
for (auto i : doubled) {
cout << i << " ";
}
cout << endl;
return 0;
}
```
输出:
```
2 4 6 8 10
```
在上面的示例中,我们定义了一个 `map` 函数,它接受一个 `vector` 和一个函数对象 `f`,然后使用 `transform` 算法将 `f` 应用于输入 `vector` 的每个元素,并将结果存储在新的 `vector` 中返回。在 `main` 函数中,我们使用 `map` 函数将 `v` 中的每个元素都乘以 2,并将结果存储在 `doubled` 中,最后输出 `doubled` 中的元素。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)