当前位置: 首页 > 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;网络。这些模型虽然在许多任务中取得了成功&…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...