仿函数的学习

仿函数 也叫 函数对象

仿函数是什么东西?

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

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

};

为什么要有这个仿函数

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

相关推荐
渣渣灰飞19 分钟前
MySQL 系统学习 第五阶段:企业级 MySQL 实战开发 第二章:RBAC 权限系统设计
android·学习·mysql
六bring个六30 分钟前
open Harmony中分布式软总线的学习任务清单
分布式·学习·c/c++·open harmony
精神底层1 小时前
AI 学习笔记:研究方法的演变
人工智能·笔记·学习
second601 小时前
第一部分:快速上手 —— 建立 C++ 基本语法与编程范式
开发语言·c++
郝学胜-神的一滴1 小时前
算法实战:最小k个数——大顶堆的优雅解法
开发语言·数据结构·c++·python·程序人生·算法·排序算法
依然范特东1 小时前
RAG学习总结3--检索技术
笔记·学习
bksczm1 小时前
linux之线程概念和控制
linux·开发语言·c++
白帽小阳2 小时前
[特殊字符]【2026最新】零基础入门学网络安全(详细路线图),看这篇就够了!
学习·安全·web安全·网络安全·安全运营·学习路线·web渗透
代码游侠2 小时前
PCBA板基础知识
学习·pcb工艺
hehelm2 小时前
Linux网络编程—TCP字典翻译系统
linux·开发语言·网络·c++·tcp/ip