仿函数的学习

仿函数 也叫 函数对象

仿函数是什么东西?

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

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;
	}

};

为什么要有这个仿函数

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

相关推荐
AI_零食5 分钟前
Flutter 框架跨平台鸿蒙开发 - 孤独指数应用
学习·flutter·开源·harmonyos
森G12 分钟前
58、最佳实践与注意事项---------多线程、竟态条件和同步
c++·qt
CheerWWW16 分钟前
C++学习笔记——箭头运算符、std::vector的使用、静态链接、动态链接
c++·笔记·学习
ZhiqianXia33 分钟前
Pytorch 学习笔记(17):decompositions.py —— 算子分解的百科全书
pytorch·笔记·学习
xian_wwq37 分钟前
【学习笔记】大模型如何理解图片
笔记·学习
郭涤生38 分钟前
原子操作的内存顺序
c++
ALex_zry1 小时前
C++模板元编程实战技巧
网络·c++·windows
talen_hx2961 小时前
《零基础入门Spark》学习笔记 Day 13
笔记·学习·spark
SteveSenna1 小时前
强化学习4.1:基于价值——Q-learning
人工智能·学习·算法·机器人
少许极端1 小时前
算法奇妙屋(四十四)-贪心算法学习之路11
java·学习·算法·贪心算法