c++仿函数--通俗易懂

news2024/12/23 22:16:43

1.仿函数是什么

仿函数也叫函数对象,是一种可以像函数一样被调用的对象。从编程实现的角度看,它是一个类,不过这个类重载了函数调用运算符()

class Add {
public:
    int operator()(int a, int b) {
        return a + b;
    }
};

注意:使用的时候必须要有对象,因为他本本质上其实是对象去调用它的成员函数!!!

以下是错误用法

2.仿函数的使用场景

假设有一个类student

struct Student {
public:
    void print()
    {
        cout <<"name: " << _name << " " << " score: " << _score << endl;
    }
    string _name;
    int _score;
};

我们定义几个students对象,并对这些对象按照成绩score排序,这时候可以用sort函数进行排序

这样使用sort会报错!!!因为对于内置类型,sort知道比较规则,但是对于自定义类型students,sort并不知道比较规则,这时候我们就需要传一个仿函数过去了!!!

我们首先创建一个类,重载operator(),按照我们想要的比较规则返回bool值,这里我们按照成绩大小排序

class CompareScore {
public:
    bool operator()(const Student& s1, const Student& s2) {
        return s1._score < s2._score;
    }
};

这里传的是一个匿名对象 CompareScore(),再次注意:使用仿函数时传的是对象,不是类型!!!,本质是在sort函数内部,用这个实例化出来的对象调用它的成员函数 operator()!!! 这里一定要明确!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2230057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

玩转Docker | Docker基础入门与常用命令指南

玩转Docker | Docker基础入门与常用命令指南 引言基本概念help帮助信息常用命令管理镜像运行容器构建镜像其他Docker命令整理结语引言 Docker 是一种开源的应用容器引擎,它允许开发者将应用程序及其依赖打包进一个可移植的容器中,然后发布到任何流行的 Linux 机器上。这大大简…

【机器学习】22. 聚类cluster - K-means

聚类cluster - K-means 1. 定义2. 测量数据点之间的相似性3. Centroid and medoid4. Cluster之间距离的测量方式5. 聚类算法的类别6. K-mean7. 如何解决中心初始化带来的影响8. K-means问题&#xff1a;处理空集群9. 离群值的问题10. Bisecting K-means&#xff08;二分K-means…

wsl2.0(windows linux子系统)使用流程

1.什么是wsl wsl指的是windows的linux子系统&#xff0c;最初是wsl1.0&#xff0c;靠windows内核来模拟linux内核&#xff0c;并不运行真正的linux内核&#xff0c;所以有时会有兼容性的问题。 而wsl2.0是基于windows自带的虚拟机功能hyper-v的&#xff0c;它会把设备上的每个…

大数据新视界 -- 大数据大厂之数据质量管理全景洞察:从荆棘挑战到辉煌策略与前沿曙光

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

硅谷甄选(11)角色管理

角色管理模块 10.1 角色管理模块静态搭建 还是熟悉的组件&#xff1a;el-card、el-table 、el-pagination、el-form <template><el-card><el-form :inline"true" class"form"><el-form-item label"职位搜索"><el-…

这5个堪称每日必看的网站,你都有所了解吗?

身为一名出色的UI设计师&#xff0c;能够迅速捕捉灵感、始终保持敏锐的审美眼光以及时刻洞悉行业动态&#xff0c;无疑是必备的职业素养与技能。今儿个小编就特意为各位小伙伴精心梳理了一些UI设计师绝对不容错过的绝佳网站哦。通过浏览这些网站&#xff0c;大家可以第一时间掌…

安全成为大模型的核心;大模型安全的途径:大模型对齐

目录 安全成为大模型的核心 大模型安全的途径:大模型对齐 人类反馈强化学习(RLHF) 直接偏好优化(DPO) 安全成为大模型的核心 大模型安全的途径:大模型对齐 大模型对齐技术(Alignment Techniques for Large Language Models)是确保大规模语言模型(例如GPT-4)的输…

<项目代码>YOLOv8 煤矸石识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

练习LabVIEW第三十题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第三十题&#xff1a; 用labview写一个获取当前系统时间的程序 开始编写&#xff1a; 前面板添加一个字符串显示控件&am…

NVR设备ONVIF接入平台EasyCVR视频分析设备平台视频质量诊断技术与能力

视频诊断技术是一种智能化的视频故障分析与预警系统&#xff0c;NVR设备ONVIF接入平台EasyCVR通过对前端设备传回的码流进行解码以及图像质量评估&#xff0c;对视频图像中存在的质量问题进行智能分析、判断和预警。这项技术在安防监控领域尤为重要&#xff0c;因为它能够确保监…

springboot框架使用mybatis-plus3.5.1以下版本的代码生成器工具类

我们在使用springboot 框架 和mybatis-plus 开发web项目的时候&#xff0c;像 控制器 这类的文件 有了这个基于mybatis-plus 的 代码生成器 我们就不必自己创建了 &#xff0c;直接执行后 自动帮我们生成好控制器、服务处、实现层 等等 非常的方便 。 废话不多说&#xff0c;还…

价值为王,浅析基础大模型行业应用创新发展新路径

在2024年7月的世界人工智能大会&#xff08;WAIC&#xff09;上&#xff0c;百度董事长兼首席执行官李彦宏关于大模型的演讲引起了广泛关注。他在演讲中强调了大模型应用的重要性&#xff0c;并提出了一个观点&#xff1a;“没有应用的大模型一文不值”。这一观点直指当前人工智…

Linux中部署PostgreSQL保姆级教程

一、版本说明 本文采用的版本号是postgresql-14.4。 官网资源包下载地址&#xff1a;PostgreSQL: File Browser 二、安装前的准备 2.1安装依赖 2.1.1安装编译工具 yum install -y gcc gcc-c这个命令安装了 GNU 编译器集合&#xff08;gcc&#xff09;和 GNU C 编译器&#x…

11月1日笔记(UAC绕过)

Bypass UAC 用户账户控制(User Account Control&#xff0c;UAC)是 Windows 操作系统采用的一种控制机制&#xff0c;可以阻止自动安装未经授权的应用并防止意外更改系统设置&#xff0c;有助于防止恶意软件损坏计算机。用户账户控制使应用程序和任务始终在非管理员账户的安全…

什么是计算机视觉算法?——深度剖析背后的技术与应用

计算机视觉&#xff08;Computer Vision&#xff09;作为人工智能的重要分支&#xff0c;正在逐渐改变我们的生活。从人脸识别到自动驾驶&#xff0c;从医疗影像诊断到视频监控&#xff0c;计算机视觉的应用无处不在&#xff0c;而支撑这一切的正是计算机视觉算法。那么&#x…

客户案例 | Ansys助力Lumotive将设计周期缩短两到三个数量级

“我们使用Ansys Lumerical FDTD、亚马逊云科技&#xff08;AWS&#xff09;和 Python API设计了这种超表面&#xff0c;同时使其与CMOS制造公差兼容。Lumerical的AWS解决方案有助于Lumotive将设计周期缩短两到三个数量级&#xff0c;而且不会增加成本或降低准确性。” —— P…

如何打开/关闭 GitLab 的版本检查功能?

本文分享如何打开/关闭 GitLab 的版本检查功能。 极狐GitLab 是 GitLab 的中国发行版【https://dl.gitlab.cn/ncecn6kb】&#xff0c;中文版本对中国用户更友好&#xff0c;文章以私有化部署的极狐GitLab 实例来演示版本检查功能的开启和关闭。强烈不建议关闭该功能&#xff0…

软件测试学习笔记丨Selenium复用已打开浏览器

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/22520 本文为霍格沃兹测试开发学社的学习经历分享&#xff0c;写出来分享给大家&#xff0c;希望有志同道合的小伙伴可以一起交流技术&#xff0c;一起进步~ 说明&#xff1a;本篇博客基于sel…

Java并发常见面试题总结(下)

Map&#xff08;重要&#xff09; HashMap 和 Hashtable 的区别 线程是否安全&#xff1a; HashMap 是非线程安全的&#xff0c;Hashtable 是线程安全的,因为 Hashtable 内部的方法基本都经过synchronized 修饰。&#xff08;如果你要保证线程安全的话就使用 ConcurrentHashMa…

从比亚迪超越特斯拉,看颠覆全球市场的中国力量

这是比亚迪CEO王传福早年在日本调研电池供应链时发出的感慨。 那时的人们谁也没有想到&#xff0c;比亚迪会从深圳的一家普通的电池供应商开始做起&#xff0c;拼出一条属于自己的“血路”&#xff0c;摇身一变成为名副其实的“电车之王”&#xff0c;并让全球车企仰望。 比亚…