仿函数的学习

仿函数 也叫 函数对象

仿函数是什么东西?

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

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

};

为什么要有这个仿函数

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

相关推荐
weixin_4589232013 小时前
分布式日志系统实现
开发语言·c++·算法
以孝治家行动14 小时前
传承家风家训 涵养时代新人——慈明学校以孝治家阳光家庭教育中心开展线上学习会
学习·以孝治家·正能量
强子感冒了14 小时前
MySQL学习笔记:索引和数据库设计
数据库·学习·mysql
flashier14 小时前
ESP32学习笔记_WiFi(3)——HTTP
网络·笔记·单片机·网络协议·学习·http·esp32
爱装代码的小瓶子14 小时前
【C++与Linux】文件篇(2)- 文件操作的系统接口详解
linux·c++
70asunflower14 小时前
Zotero论文阅读标记颜色框架
人工智能·学习·考研
拾光Ծ14 小时前
【优选算法】双指针算法:专题二
c++·算法·双指针·双指针算法·c++算法·笔试面试
j_xxx404_14 小时前
C++算法入门:滑动窗口合集(长度最小的子数组|无重复字符的最长字串|)
开发语言·c++·算法
xhbaitxl14 小时前
算法学习day29-贪心算法
学习·算法·贪心算法
艾莉丝努力练剑14 小时前
【AI时代的赋能与重构】当AI成为创作环境的一部分:机遇、挑战与应对路径
linux·c++·人工智能·python·ai·脉脉·ama