高阶函数的应用高阶函数就是把函数作为参数使用一般用 std::function。#include vector #include algorithm // 定义一个高阶函数接受一个比较函数作为参数 void sortNumbers(std::vectorint numbers, std::functionbool(int, int) comp) { std::sort(numbers.begin(), numbers.end(), comp); }这个例子中sortNumbers函数接受一个比较函数作为参数这个比较函数决定了如何对向量进行排序。函数对象函数对象是一种重载了 operator() 的类它可以像函数一样被调用。函数对象通常用于函数式编程以便可以灵活地定义可调用的对象。#include iostream #include vector #include algorithm class MultiPly { public: MultiPly(int factor) : m_factor(factor) {} int operator()(int n) const { return n * m_factor; } private: int m_factor; } int main() { std::vectorint numbers {1, 2, 3, 4, 5}; int factor 3; std::transform(numbers.begin(), numbers.end(), MultiPly(2)); for(int num : numbers) { std::cout num ; } std::cout std::endl; return 0; }在这里可能有人又要问了函数对象与 Lambda 表达式不同点在哪其实函数对象可以灵活地保存和管理状态例如在多次调用时保留某些中间值。