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

C++ Functor仿函数

Functor 对象模拟函数

把类对象,像函数名一样使用。

仿函数(functor),就是使一个类的使用看上去像一个函数。其实现就是类中实现
一个 operator(),这个类就有了类似函数的行为,就是一个仿函数类了。

operator() 语法格式

class 类名
{返值类型 operator()(参数类型)函数体
}
#include <iostream>
#include <math.h>
using namespace std;class Pow
{
public://仿函数double operator()(double a, int b){double result = 1;for(int i=0;i<b;i++){result *= a;}return result;}};
int main()
{cout<<pow(5,2)<<endl;Pow mypow;cout<<mypow(5,2)<<endl;return 0;
}

functor 的优势

functor 的优势在于,是对象形式,可以携带更多的的信息,用于作出判断。
比如,我们可以在对象初始化的时候,传入参数来决定状态,而不用去修改原代码。

functor使用示例

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;//局限性较大
bool myCompare(int a, int b){return a < b;
}//仿函数,可以携带更多参数
class Compare{
public:Compare(bool flag=true):flag(flag){}bool operator()(int a, int b){if (flag==true)return a < b;elsereturn a > b;}
private:bool flag;
};int main(){int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};vector<int> vi(arr, arr+11);sort(vi.begin(), vi.end(), Compare(false));//c98的写法
//    vector<int>::iterator itr;
//    for(itr=vi.begin();itr!=vi.end();++itr){
//        cout<<*itr<<" ";
//    }//c++11的写法for(auto itr=vi.begin();itr!=vi.end();++itr){cout<<*itr<<" ";}//c++17的写法
//    for(auto i : vi){
//        cout<<i<<" ";
//    }return 0;
}

相关文章:

C++ Functor仿函数

Functor 对象模拟函数 把类对象&#xff0c;像函数名一样使用。 仿函数(functor)&#xff0c;就是使一个类的使用看上去像一个函数。其实现就是类中实现 一个 operator()&#xff0c;这个类就有了类似函数的行为&#xff0c;就是一个仿函数类了。 operator() 语法格式 clas…...

【EI会议征稿通知】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)

重要信息 会议官网&#xff1a;www.icbase.org&#xff08;查看详情&#xff09; 中文主页&#xff1a;【往届会后3个月检索】第五届大数据、人工智能与软件工程国际研讨会&#xff08;ICBASE 2024&#xff09;_艾思科蓝_学术一站式服务平台 会议时间&#xff1a;2024年9月2…...

微信小程序多端框架实现app内自动升级

多端框架生成的app&#xff0c;如果实现app内自动升级&#xff1f; 一、Android 实现app自动升级&#xff0c;华为应用市场 1、获取 应用市场地址 下载地址 2、在微信开放平台进行配置 应用下载地址&#xff1a;应用市场点击分享&#xff0c;里面有一个复制连接功能 应用市…...

C# Log4Net应用

1 需求分析 日志记录是程序开发中必不可少的环节,对于bug调试和后期项目维护都十分重要.其中Log4net是C#环境下广泛使用的日志记录库,功能十分强大.本教程提供的日志记录需求如下 1&#xff0c;日志文件统一保存到项目启动目录下的logs文件夹 2&#xff0c;以天为单位进行日志…...

pytest8.x版本 中文使用文档-------32.示例:使用自定义目录收集器

默认情况下&#xff0c;pytest 使用pytest.Package来收集包含 __init__.py 文件的目录&#xff0c;使用 pytest.Dir来收集其他目录。如果你想要自定义目录的收集方式&#xff0c;你可以编写自己的pytest.Directory 收集器&#xff0c;并使用 pytest_collect_directory钩子来连接…...

c语言第七天笔记

作业题&#xff1a; 设计TVM&#xff08;地铁自动售票机&#xff09;机软件。 输入站数&#xff0c;计算费用&#xff0c;计费规则&#xff0c;6站2元&#xff0c;7-10站3元&#xff0c;11站以上为4元。 输入钱数&#xff0c;计算找零(找零时优先找回面额大的钞票)&#xff0…...

软件测试经理工作日常随记【8】-UI自动化_加密接口的传输

软件测试经理工作日常随记【8】-UI自动化_加密接口的传输 工具类 #utils_api.py class RequestUtils:classmethoddef send_request_splicing(cls, dicts, url): # 对应请求的入参及请求的函数Logger.logger_in().info(-----------------{}接口开始执行-----------------.for…...

基于FPGA的出租车计费系统设计---第一版--郝旭帅电子设计团队

欢迎各位朋友关注“郝旭帅电子设计团队”&#xff0c;本篇为各位朋友介绍基于FPGA的出租车计费系统设计—第一版 功能说明&#xff1a; 收费标准&#xff08;里程&#xff09;&#xff1a;起步价5元&#xff0c;包括三公里&#xff1b;三公里之后&#xff0c;每公里2元&#x…...

商汤联合建工社共同打造“住建领域法规标准知识大模型”

近日&#xff0c;商汤科技与中国建筑出版传媒有限公司&#xff08;下称“建工社”&#xff09;共同发布“住建领域法规标准知识大模型”&#xff0c;共同探索新型知识服务模式。大模型聚焦建筑行业&#xff0c;以商汤“日日新SenseNova 5.5”大模型体系为基础&#xff0c;结合海…...

基于STM32的智能交通监控系统教程

目录 引言环境准备智能交通监控系统基础代码实现&#xff1a;实现智能交通监控系统 车辆检测模块交通流量分析模块通信与网络系统实现用户界面与数据可视化应用场景&#xff1a;交通管理与优化常见问题与解决方案收尾与总结 引言 随着城市化进程的加快&#xff0c;交通拥堵问…...

Git和TortoiseGit的安装与使用

文章目录 前言一、Git安装步骤查看版本信息 二、TortoiseGit安装中文语言包TortoiseGit 配置不同语言 Git基本原理介绍及常用指令 GitLab添加TortoiseGIT生成SSH Key 前言 Git 提供了一种有效的方式来管理项目的版本&#xff0c;协作开发&#xff0c;以及跟踪和应用文件的变化…...

改进YOLOv5:加入非对称卷积块ACNet,加强CNN 的内核骨架,包含VOC对比实验

🔥🔥🔥 提升多尺度、不规则目标检测,创新提升 🔥🔥🔥 🔥🔥🔥 捕捉图像特征和处理复杂图像特征 🔥🔥🔥 👉👉👉: 本专栏包含大量的新设计的创新想法,包含详细的代码和说明,具备有效的创新组合,可以有效应用到改进创新当中 👉👉👉: �…...

论文解读(12)-Transfer Learning

这个也是看论文的时候看到的&#xff0c;但是对这方面不是理解&#xff0c;需要对这方面知识点进行一个补充。 参考&#xff1a; 迁移学习概述&#xff08;Transfer Learning&#xff09;-CSDN博客 1. 什么是Transfer Learning&#xff1f; Transfer Learning就是迁移学习&…...

力扣高频SQL 50题(基础版)第三十八题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十八题1484.按日期分组销售产品题目说明实现过程准备数据实现方式结果截图总结 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十八题 1484.按日期分组销售产品 题目说明 表 Activities&#xff1a; ---…...

大模型下的视频理解video understanding

数据集 Learning Video Context as Interleaved Multimodal Sequences Motivation&#xff1a; 针对Narrative videos, like movie clips, TV series, etc.&#xff1a;因为比较复杂 most top-performing video perception models 都是研究那种原子动作or人or物 understandin…...

【网络安全】CR/LF注入+Race Condition绕过MFA

未经许可,不得转载。 文章目录 漏洞1:CR/LF注入前言正文漏洞2:Race Condition绕过MFA前言正文漏洞1:CR/LF注入 前言 ExaHub(此处为虚拟名称)是一个专为 Exa 编程语言的爱好者和专业人士量身定制的平台。Exa 语言以其出色的速度和性能而闻名,广泛应用于科学计算、机器学…...

深度学习入门——卷积神经网络

本章的主题是卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;。CNN被用于图像识别、语音识别等各种场合&#xff0c;在图像识别的比赛中&#xff0c;基于深度学习的方法几乎都以CNN为基础。本章将详细介绍CNN的结构&#xff0c;并用Python实…...

快团团供货大大团长帮卖团长如何线上结算和支付货款?

一、如何支付结算单&#xff1f; 团长在快团团小程序【我的供货商】—【结算单】—【待支付】中&#xff0c;找到需要支付的结算单&#xff0c;点击【去支付】即可。 当有多笔结算单待支付时&#xff0c;团长可筛选供货商和日期找到需要支付的结算单&#xff0c;点击【去批量…...

vite vue3 Webstorm multiple export width the same name “default“

系统格式不一样&#xff0c;导致代码文件格式冲突导致的&#xff0c;解决方法找到对应的文件&#xff0c;将文件类型切换成LF。...

Transformer预测模型及其Python和MATLAB实现

### 一、背景 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;传统的序列到序列&#xff08;Seq2Seq&#xff09;模型大多依赖于循环神经网络&#xff08;RNN&#xff09;和长短期记忆&#xff08;LSTM&#xff09;网络。这些模型虽然在许多任务中取得了成功&…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

规则与人性的天平——由高考迟到事件引发的思考

当那位身着校服的考生在考场关闭1分钟后狂奔而至&#xff0c;他涨红的脸上写满绝望。铁门内秒针划过的弧度&#xff0c;成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定"&#xff0c;构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

《Offer来了:Java面试核心知识点精讲》大纲

文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...

高效的后台管理系统——可进行二次开发

随着互联网技术的迅猛发展&#xff0c;企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心&#xff0c;成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统&#xff0c;它不仅支持跨平台应用&#xff0c;还能提供丰富…...

第22节 Node.js JXcore 打包

Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本&#xff0c;基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...

iOS 项目怎么构建稳定性保障机制?一次系统性防错经验分享(含 KeyMob 工具应用)

崩溃、内存飙升、后台任务未释放、页面卡顿、日志丢失——稳定性问题&#xff0c;不一定会立刻崩&#xff0c;但一旦积累&#xff0c;就是“上线后救不回来的代价”。 稳定性保障不是某个工具的功能&#xff0c;而是一套贯穿开发、测试、上线全流程的“观测分析防范”机制。 …...