我开始学习一些C++,不明白在C++中高阶函数如何工作。有人可以用一个简单的例子解释C++ 11中的高阶函数吗?我在网上找不到太多关于这个主题的信息。
我开始学习一些C++,不明白在C++中高阶函数如何工作。有人可以用一个简单的例子解释C++ 11中的高阶函数吗?我在网上找不到太多关于这个主题的信息。
<algorithm>
头文件中的标准C++函数都是高阶函数的示例。count_if
函数接受一个一元谓词作为参数,该谓词是一种可调用函数类型,并返回与给定谓词匹配的对象计数。由于count_if
是一个接受另一个函数作为参数的函数,因此它是一个高阶函数。#include <algorithm>
#include <iostream>
#include <vector>
bool is_even(int i) {
return i % 2 == 0;
}
int main(int argc, char *argv[]) {
std::vector<int> v;
for (int i = 0; i < 10; ++i) {
v.push_back(i);
}
std::cout
<< "count = "
<< std::count_if(v.begin(), v.end(), &is_even)
<< std::endl;
return 0;
}
#include <algorithm>
#include <iostream>
#include <vector>
int main(int argc, char *argv[]) {
std::vector<int> v = { 0, 1, 2, 3, 4, 5 };
std::cout
<< "count = "
<< std::count_if(v.begin(),
v.end(),
[](int i) -> bool { return i % 2 == 0; })
<< std::endl;
return 0;
}
is_even
替换为lambda表达式。iseven()
的定义切换为[](int i) -> bool { return i % 2 == 0; }
,这里的[]有什么用处(C++11标准)? - Anu
std::function
、函数指针、lambda表达式、函数对象等实现了operator()
的对象)。 - user703016