仿函数的学习

仿函数 也叫 函数对象

仿函数是什么东西?

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

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

};

为什么要有这个仿函数

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

相关推荐
Kobebryant-Manba1 分钟前
学习门控循环单元gru
深度学习·学习·gru
c++之路14 分钟前
备忘录模式(Memento Pattern)
c++·microsoft
Upsy-Daisy14 分钟前
Hermes Agent 学习笔记 10:源码结构与整体架构总结,Hermes 到底是如何运转起来的?
笔记·学习·架构
你是个什么橙21 分钟前
Python入门学习1:安装配置开发环境——Python或Annaconda,Pycharm
python·学习·pycharm
天恩软件26 分钟前
一分钟学会 C++ 标准模板库智能指针
c++·智能指针
j7~34 分钟前
【C++】STL--Vector容器--拆析解剖Vector的实现以及Vector的底层详解(1)
开发语言·c++·vector·迭代器失效·迭代器的使用
森G37 分钟前
76、仿ASIO实现的Linux c++服务器------服务器源码解析----云视频服务项目
c++·qt
xxwl58539 分钟前
Python语言初步认识(1)
开发语言·python·学习
TCW112141 分钟前
AI底层系列:用C++实现线性代数的公式推导与算法设计-6.线性方程组的解集
c++·人工智能·算法
Niuguangshuo44 分钟前
LangChain 学习之旅(五):Agent 与工具调用实战
学习·langchain