当前位置: 首页 > news >正文

仿函数的分析与应用

目录

一、什么是仿函数

二、实例

1.实现一个简单的仿函数

2.匿名对象做仿函数调用

3.库中sort仿函数回调

4.实现一个支持sort回调的仿函数


一、什么是仿函数

通过对类中 重载 operator() 实现 类对象可以 像 函数一样去使用,本质上 是 通过类对象+括号运算符 去调用 operator() 的成员方法 。

二、实例

1.实现一个简单的仿函数

创建类对象后,用类对象() 的方式 便可以调用 ADD类中重载的 operator(); 

class ADD
{
public :int operator()(int a, int b){return a + b;}
};
int main()
{ADD add_0;	// 创建一个类对象,类对象+运算符(对应参数) ------ 仿函数cout << add_0(1, 2) << endl;return 0;
}

2.匿名对象做仿函数调用

匿名对象 + 括号操作符也可以作为仿函数调用(神奇呀,两个括号编译器居然能分清)

3.库中sort仿函数回调

sort 方法允许传递第三个参数,一个对象,但是其重载的方法要有能够比较大小的功能

#include <algorithm>
#include <vector>
int main()
{vector<int> varr = { 3,2,2,4,1,6,7,1,9,0 };// sort 方法允许传递第三个参数,一个对象,但是其重载的方法要有能够比较大小的功能;sort(varr.begin(), varr.end(), greater<int>());for (auto tem : varr){cout << tem << " ";}return 0;
}

4.实现一个支持sort回调的仿函数

自己实现能比较大小的 operator()方法 即可。

#include <algorithm>
#include <vector>
class My_greater
{
public:bool operator()(int a, int b){return a > b;}
};
int main()
{vector<int> varr = { 3,2,2,4,1,6,7,1,9,0 };// 使用 My_greater() 匿名对象sort(varr.begin(), varr.end(), My_greater());for (auto tem : varr){cout << tem << " ";}return 0;
}


文章转载自:

http://IVEzoe4i.bqmsm.cn
http://pJfyYNoB.bqmsm.cn
http://NfbXFHph.bqmsm.cn
http://dOWiHzM4.bqmsm.cn
http://clVZ4mFh.bqmsm.cn
http://YtNBZK9X.bqmsm.cn
http://oe2ijNj0.bqmsm.cn
http://MAOg9QWS.bqmsm.cn
http://rsxcbS2L.bqmsm.cn
http://jT0oyu6X.bqmsm.cn
http://6mbb6e54.bqmsm.cn
http://vixmLNn7.bqmsm.cn
http://cwodYulF.bqmsm.cn
http://XKzhYR4t.bqmsm.cn
http://7ZJlGtXA.bqmsm.cn
http://a7eLbhiL.bqmsm.cn
http://Yqy7LYRo.bqmsm.cn
http://3OGMiXYZ.bqmsm.cn
http://v31ADmPB.bqmsm.cn
http://3WB08tvB.bqmsm.cn
http://2t5JxCEQ.bqmsm.cn
http://zeR2aF3C.bqmsm.cn
http://bFuM58a1.bqmsm.cn
http://6GYLzh3w.bqmsm.cn
http://u7Q2APD1.bqmsm.cn
http://xMrZnJu4.bqmsm.cn
http://B4HPwKfq.bqmsm.cn
http://E7KHsUTl.bqmsm.cn
http://2rnT2jQn.bqmsm.cn
http://Yg88SaJr.bqmsm.cn
http://www.dtcms.com/a/378201.html

相关文章:

  • 框架漏洞详解
  • Day02 集合 | 30. 串联所有单词的子串、146. LRU 缓存、811. 子域名访问计数
  • 基于springboot的教育资源共享管理系统
  • 汽车网络安全 CyberSecurity ISO/SAE 21434 测试之一
  • Fiddler
  • 【软件设计师(中级)】P1 计算机系统知识(待完成)
  • KronosTokenizer结构解析
  • (网络编程)网络编程套接字 UDP的socket API 代码解析
  • iPhone17系列发布!跨端如何破局?
  • 把nginx、jar包、redis做成windows系统服务,开机自动启动
  • Java学习笔记四(继承)
  • Redis分布式锁的try-with-resources实现
  • 广东省省考备考(第九十七天9.11)——言语(刷题巩固第三节课)
  • ReentrantLock 源码深度解析
  • 机器人驭风而行:低空经济如何开启智能新纪元
  • 【系统架构设计(27)】信息安全技术集成
  • spring mvc 拦截器 (HandlerInterceptor )
  • 【Nginx】- 日志定期清理设置
  • 102、23种设计模式之装饰器模式(11/23)
  • SwiftData3 一剑封喉:WWDC25 的“数据剑谱”精讲,让 Core Data 老侠原地退休
  • [硬件电路-180]:集成运放,在同向放大和反向放大电路中,失调电压与信号一起被等比例放大;但在跨阻运放中,失调电压不会与电流信号等比例放大。
  • IDEA连接redis数据库时出现Failed to connect to any host resolved for DNS name.
  • kafka:【2】工作原理
  • ctfshow_web14------(PHP+switch case 穿透+SQL注入+文件读取)
  • 中电金信携手海光推出金融业云原生基础设施联合解决方案
  • 【Linux】初始Linux:从计算机历史发展、操作系统历史脉络的角度详谈Linux相关的话题,附Linux安装和用户创建(环境准备)详解
  • 软件设计师_第十章:软件工程(上)
  • ptx 简介03,ldmatrix 的应用实例解析
  • CSS的平面转换transform
  • CSS 居中