仿函数的学习

仿函数 也叫 函数对象

仿函数是什么东西?

当你第一眼看到下面的代码的时候,你会觉得它是一个函数的调用:

cpp 复制代码
bool result = less(a, b);

但是我如果告诉你,less 是一个我自定义的一个类的对象呢?

cpp 复制代码
class Less
{
public:
    bool operator()(int x, int y)
    {
        return x < y;
    }
};

然后再这样:

cpp 复制代码
Less less;

int a = 5;
int b = 10;

bool result = less(a, b); // 调用 less.operator()(a, b)

这种看起来像函数调用,但其实不是函数调用,这种就是仿函数

它的原理可以这样来理解:

这个仅仅针对int ,写个模版更好一些:

cpp 复制代码
template<class T>
class Less
{
public:
	bool operator()(const T& x, const T& y)
	{
		return x < y;
	}

};

为什么要有这个仿函数

为了替代函数指针,(因为函数指针太恶心了)用仿函数更容易理解

相关推荐
浮江雾6 小时前
Flutter第三节----Dart中的数据类型
android·开发语言·学习·flutter·入门·函数
风和先行6 小时前
Android 数据库相关学习总结
android·数据库·学习
chh5636 小时前
C++--list
开发语言·数据结构·c++·学习·算法·list
qq_416409137 小时前
性价比高的openclaw选哪家
c++
ctrl_v助手7 小时前
HALCON 学习笔记1
笔记·数码相机·学习·算法·计算机视觉
汉克老师7 小时前
GESP2026年6月认证C++八级( 第三部分编程题(2、堆石子))精讲
c++·排列组合·快速幂·费马小定理·gesp8级·逆元·组合数计算
信竞星球_少儿编程题库7 小时前
2026年全国青少年信息素养大赛算法应用主题赛(星火征途C++小学组复赛真题)
c++
Edward111111117 小时前
一AI名词
java·开发语言·数据库·学习
栈溢出了7 小时前
Redis repl_backlog 学习笔记
java·开发语言·redis·学习
盐焗鹌鹑蛋8 小时前
【C++】AVL树
c++