C++仿函数
在 C++ 中,仿函数是一种可以像函数一样调用的对象。
通过实现 operator()
,你可以创建一个类或结构体,然后像函数一样使用它,这就是仿函数的概念。
当我们谈到仿函数时,通常是指定义了函数调用运算符 operator()
的类或结构体。
以下是两个简单的 C++ 仿函数示例,一个用于比较整数大小,另一个用于字符串长度比较:
比较整数大小的仿函数:
#include <iostream> class CompareIntegers { public: bool operator()(int a, int b) const { return a < b; } }; int main() { CompareIntegers compare; // 使用仿函数进行比较 if (compare(3, 5)) { std::cout << "3 is less than 5" << std::endl; } else { std::cout << "3 is not less than 5" << std::endl; } return 0; }
扩展:
仿函数在容器里面用作比较函数。
下面是代码片段:
// 这里只是代码片段,用来学习和理解仿函数的概念和使用 class TimerManager; class Timer : public std::enable_shared_from_this<Timer>{ friend class TimerManager; public: typedef std::shared_ptr<Timer> ptr; private: Timer(uint64_t ms, std::function<void()> cb, bool recurring, TimerManager* manager); private: bool m_recurring = false; //是否寻喊定时器 uint64_t m_ms = 0; //执行周期 uint64_t m_next = 0; //精确的执行时间 private: // operator() 这是仿函数的用法。 struct Comparator{ bool operator()(const Timer::ptr& lhs, const Timer::ptr& rhs)const; }; }; // 定义容器变量,仿函数作为比较函数传递进去。 std::set<Timer::ptr, Timer::Comparator> m_timers;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?