news 2026/4/19 21:06:16

高阶函数的应用与函数对象概念

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
高阶函数的应用与函数对象概念

高阶函数的应用

高阶函数就是把函数作为参数使用,一般用 std::function。

#include <vector> #include <algorithm> // 定义一个高阶函数,接受一个比较函数作为参数 void sortNumbers(std::vector<int> &numbers, std::function<bool(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::vector<int> 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 表达式不同点在哪?其实,函数对象可以灵活地保存和管理状态,例如在多次调用时保留某些中间值。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 21:05:51

G-Helper完全指南:如何高效管理华硕笔记本性能与功耗

G-Helper完全指南&#xff1a;如何高效管理华硕笔记本性能与功耗 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sca…

作者头像 李华
网站建设 2026/4/19 21:03:52

告别手动抓信号!用Synopsys AXI VIP的Port Monitor自动构建你的UVM Scoreboard

告别手动抓信号&#xff01;用Synopsys AXI VIP的Port Monitor自动构建你的UVM Scoreboard 在复杂的SoC验证环境中&#xff0c;AXI总线协议的验证往往占据了工程师大量的时间和精力。传统的验证方法需要手动解析monitor数据、编写繁琐的比对逻辑&#xff0c;不仅效率低下&#…

作者头像 李华
网站建设 2026/4/19 21:02:43

分布式系统设计模式

分布式系统设计模式&#xff1a;构建高可用的架构基石 在当今云计算与微服务盛行的时代&#xff0c;分布式系统已成为支撑大规模应用的核心架构。分布式环境下的网络延迟、节点故障和数据一致性等问题&#xff0c;给系统设计带来了巨大挑战。分布式系统设计模式正是为解决这些…

作者头像 李华