仿函数的学习

仿函数 也叫 函数对象

仿函数是什么东西?

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

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

};

为什么要有这个仿函数

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

相关推荐
zjnlswd13 小时前
C#学习笔记4
笔记·学习·c#
minglie113 小时前
在linux环境烧录esp8266
学习
烧酒同学14 小时前
【C++】记录size of std::vector的巧妙坑
开发语言·c++·图形渲染
xqqxqxxq14 小时前
AI Agent学习:MCP与工具生态:工具选择的挑战(李博杰《深入理解 AI Agent》4.3观后总结)
人工智能·学习
青山是哪个青山14 小时前
LangChain 学习笔记(九):上下文与记忆
笔记·学习·langchain
KaKa_大王15 小时前
关于秒杀项目的一些理解
java·学习
Z59981784115 小时前
c#软件开发学习笔记--Modbus-TCP/UDP网口通讯
笔记·学习·c#
@呱呱爱学习16 小时前
C++大成之路_ STL容器_ Vector
开发语言·c++
zyf10441616 小时前
暑期实践日志 Day29:根据修改要求,进行视频字幕添加
学习·计算机网络·剪辑·暑期实践·课题任务
码匠许师傅16 小时前
【C++ 面试真题】19. 聊聊 C++ 的迭代器
开发语言·c++·面试