仿函数的学习

仿函数 也叫 函数对象

仿函数是什么东西?

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

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

};

为什么要有这个仿函数

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

相关推荐
(❁´◡`❁)Jimmy(❁´◡`❁)4 分钟前
【算法】 二分图理论知识和判断方法
c++·算法
im_AMBER17 分钟前
Leetcode 85 【滑动窗口(不定长)】最多 K 个重复元素的最长子数组
c++·笔记·学习·算法·leetcode·哈希算法
nwsuaf_huasir23 分钟前
overleaf在线编译latex怎办编译中文
学习
leiming630 分钟前
c++ string 容器
开发语言·c++·算法
wdfk_prog34 分钟前
[Linux]学习笔记系列 -- [fs]filesystems
linux·笔记·学习
jackaso42 分钟前
react学习笔记
笔记·学习·react.js
像名字一样难取的昵称1 小时前
Linux学习笔记:十八、Linux文件的压缩,解压缩一站式学习
linux·运维·笔记·学习·ubuntu·ssh
雍凉明月夜1 小时前
深度学习网络笔记Ⅰ(CNN)
网络·笔记·深度学习·神经网络·学习·cnn
superman超哥1 小时前
仓颉Option类型的空安全处理深度解析
c语言·开发语言·c++·python·仓颉
你好音视频1 小时前
FFmpeg FLV解码器原理深度解析
c++·ffmpeg·音视频