第九层(10):STL之函数对象

news2024/11/16 22:31:44

文章目录

  • 前情回顾
  • 函数对象
    • 概念
    • 特点
    • 谓词
      • 概念
    • 内建函数对象
      • 分类
      • 算术仿函数
      • 关系仿函数
      • 逻辑仿函数
  • 下一座石碑

🎉welcome🎉
✒️博主介绍:一名大一的智能制造专业学生,在学习C/C++的路上会越走越远,后面不定期更新有关C/C++语法,数据结构,算法,Linux,ue5使用,制作游戏的心得,和大家一起共同成长。
✈️C++专栏:C++爬塔日记
😘博客制作不易,👍点赞+⭐收藏+➕关注

前情回顾

在上一块石碑中,我学到了map/multimap,同时下一块石碑也显露出来…

  • 🚄上章地址:第九层(9):STL之map/multimap

函数对象

概念

  • 操作符重载的类,其实例化出来的对象被叫做函数对象
  • 函数对象在重载()时,行为时类似函数调用,也叫仿函数

特点

  • 函数对象在使用时,可以和普通函数一样去调用,也可以有返回值
  • 函数对象可以有自己的状态
  • 函数对象可以作为参数去传递

谓词

概念

  • 返回值为bool类型的仿函数就时谓词,可以根据仿函数的参数分为:一元谓词和二元谓词,谓词常用在算法当中,当参数去传递,当条件去使用

内建函数对象

  • 内建函数对象指的是C++在STL中建立的一些函数对象,可以直接调用使用,使用与函数时一样的,但是在使用的时候要基地引入头文件
#include<functional>

分类

  • 内建函数对象分为三类:
  1. 算术仿函数
  2. 关系仿函数
  3. 逻辑仿函数

算术仿函数

  • 在内建函数对象中提供了算术仿函数,它可以实现四则运算,还有取模和取反的操作
template<class T> T plus<T>//加法仿函数,需要两个参数
template<class T>T minus<T>//减法仿函数,需要两个参数
template<class T>T multiplies<T>//乘法仿函数,需要两个参数
template<class T>T divides<T>//除法仿函数,需要两个参数
template<class T>T modulus<T>//取模仿函数,需要两个参数
template<class T>T negate<T>//取反仿函数,只需要一个参数

使用:

#include<functional>
#include<iostream>
using namespace std;

int _a, _b;
void test1()
{
	//加法
	plus<int> a;
	cin >> _a >> _b;
	int add = a(_a, _b);
	cout <<"相加后:" << add << endl;
	//减法
	minus<int> b;
	cin >> _a >> _b;
	int min = b(_a, _b);
	cout <<"相减后:" << min << endl;
	//乘法
	multiplies<int> c;
	cin >> _a >> _b;
	int mul = c(_a, _b);
	cout <<"相乘后:" << mul << endl;
	//除法
	divides<int> d;
	cin >> _a >> _b;
	int div = d(_a, _b);
	cout << "相除后" << div << endl;
	//取模
	modulus<int> e;
	cin >> _a >> _b;
	int mod = e(_a, _b);
	cout <<"取模后:" << mod << endl;
	negate<int> f;
	cin >> _a;
	int neg = f(_a);
	cout <<"取反后:" << neg << endl;
}
int main()
{
	test1();
	return 0;
}

在这里插入图片描述

关系仿函数

  • 可以用于比较,比如在排序的时候,像从大到小排,就可以使用大于的仿函数
template<calss T> bool equal_to<T>//等于
template<calss T> bool not_equal_to<T>//不等于
template<calss T> bool greater<T>//大于
template<calss T> bool greater_equal<T>//大于等于
template<calss T> bool less<T>//小于等于
template<calss T> bool less_equal<T>//小于等于

当前者大于后者时候,返回真,小于时返回假,通常可以搭配排序算法去使用

逻辑仿函数

  • 逻辑仿函数指的是与或非三种逻辑
templace<class T> bool logical_and<T>//逻辑与
templace<class T> bool logical_or<T>//逻辑或
templace<class T> bool logical_not<T>//逻辑非

实际用途不大,但是在特定的题中使用可以方便很多

下一座石碑

  • 这座石碑倒下了,露出了下一座石碑…

😘预知后事如何,关注新专栏,和我一起征服C++这座巨塔
🚀专栏:C++爬塔日记
🙉都看到这里了,留下你们的👍点赞+⭐收藏+📋评论吧🙉

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

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

相关文章

你是如何学习 Java 的?

每一个行业中能成为大佬的人&#xff0c;一定都有他自己一套具有独到见解的方法...... 这个问题我很有发言权&#xff0c;从刚毕业做Java实习生月薪2k&#xff0c;到现在干了5年Java开发月薪43k&#xff0c;一直都在保持不断学习的状态。以我个人的经验来看&#xff0c;一个程…

视频分割新范式:视频感兴趣物体实例分割 VOIS

1. 背景视频中物体分割是视频理解的基础算法&#xff0c;也是对淘宝商品视频分析和加工所依赖的重要能力。传统的视频分割任务一般分为两种类型&#xff1a;一种是VOS&#xff08;Video Object Segmentation&#xff09;&#xff0c;该任务需要在第一帧给出物体的初始分割标注&…

Linux系列 目录和文件管理

作者简介&#xff1a;一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 简介 本章重点 一.检查文本内容 ​编辑 1.cat命令——显示并…

MySQL分表查询之Merge存储引擎实现

概念介绍 MySQL 分表之后怎么进行联合查询&#xff1f;用有表数量限制的 union all&#xff0c;还是汇总到一张表再查询&#xff0c;亦或用Sphinx&#xff08; 高性能SQL全文检索引擎 &#xff09;&#xff1f; 在这篇文章里&#xff0c;介绍使用 Merge [mɜːrdʒ] 存储引擎…

浅读人月神话(2)

读书笔记&#xff1a;今日翻书浅读&#xff0c;从《为什么巴比伦塔会失败》开始至《干将莫邪》结束&#xff0c;巴比伦塔的建造对当下项目推进有广泛借鉴意义&#xff0c;今天这几个章节在PMBOK中有一些可以互相对照学习的内容&#xff0c;《为什么巴比伦塔会失败&#xff1f;》…

荔枝派 zero 使用 Jlink 调试

Jlink 所谓硬件版本&#xff0c;就是这个调试器的硬件是第几代&#xff0c;我手上的这个是 V8 所谓固件版本&#xff0c;就是这个调试器主芯片中内置的软件是什么版本&#xff0c;我刷入的是 J-Link ARM V8 compiled Nov 28 2014 13:44:46 所谓 Jlink 工具版本&#xff0c;就…

记录--原生 canvas 如何实现大屏?

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 可视化大屏该如何做&#xff1f;有可能一天完成吗&#xff1f;废话不多说&#xff0c;直接看效果&#xff0c;线上 Demo 地址 lxfu1.github.io/large-scree…。 看完这篇文章(这个项目)&#xff…

在线支付系列【13】微信支付之签名验签流程分析

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 文章目录前言签名生成签名验证总结前言 在上篇文档中&#xff0c;我们简单实现了对接微信支付的几个接口。了解到wechatpay-apache-httpclient框架自动实现了签名和验签&#xff0c;接下来跟踪下源码&a…

LeetCode-136. 只出现一次的数字

目录题目分析哈希集位运算题目来源 https://leetcode.cn/problems/single-number/ 题目分析 题目有个条件可谓相当重要&#xff0c;即凡重复的元素最多重复一次&#xff08;原话&#xff1a;给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个…

详解Mybatis-Plus中分页插件PaginationInterceptor, MybatisPlusInterceptor在SpringBoot中的使用

文章目录1. 描述1.1 MybatisPlusInterceptor1.2 InnerInterceptor2. 实现2.1 不带条件的分页查询2.2 带条件的分页查询2.3 简述Page类3. 注意事项1. 描述 1.1 MybatisPlusInterceptor 我们在开发的过程中&#xff0c;经常会遇到分页操作&#xff0c;其分为逻辑分页和物理分页…

Gif动态图片如何用静图制作?教你静图合成动图的方法

gif动图如何制作&#xff1f;相信对于gif动图大家都不陌生&#xff0c;在平时的聊天软件中、公众号文章中都可以看到。那么&#xff0c;要如何制作gif动图呢&#xff1f;下面&#xff0c;就给教大家两个在线gif制作&#xff08;https://www.gif.cn/&#xff09;的方法&#xff…

综合案例【商品管理系统-Java基础版】(附完整源码)

Java语言的一个超级简易的商品管理系统&#xff0c;适合初学者练手 源码包无法上传至资源&#xff08;blog已经超级完整啦&#xff09;如果还是需要完整源码src包可私分享 目录1 项目分析1.1 用户模块&#xff08;普通用户、管理员用户&#xff09;1.1.1前端系统&#xff08;普…

FluentReader为什么称之为高颜值的rss阅读器

Fluent Reader 这是一款 RSS 阅读器。对于很多年轻的网友来说&#xff0c;RSS 这个名词可能有点陌生。简单来说只要某个网站支持 RSS&#xff0c;你订阅了 RSS 后&#xff0c;一旦网站更新了内容&#xff0c;就会推送到你面前。这时候&#xff0c;我们就需要一款像 Fluent Rea…

全屋智能三国志

刚刚过去的春节假期&#xff0c;对我来说&#xff0c;是一个收集现实素材、感应社会变化的好机会。也确实发现了不少新趋势&#xff0c;一个结论是&#xff1a;智能家居正在酝酿新一轮的市场浪潮。以央视春晚作为切口&#xff0c;每年央视春晚的广告投放&#xff0c;都一定程度…

vscode 配置 plantuml

1、首先安装 plantuml 插件 2、安装 java 开发环境 如果是 mac 系统&#xff0c;直接执行 brew install java &#xff0c;然后按照下图执行下提示中的命令即可 如果是 windows 系统&#xff0c;需要去官网下载 java jdk&#xff0c;安装好之后添加运行路径到 path 中 https://…

基于 ShardingSphere 的分布式数据库负载均衡架构搭建实战

本文主要分为 3 部分&#xff0c;将依次介绍&#xff1a; 基于 ShardingSphere 的分布式数据库「负载均衡架构搭建」要点结合实际的「用户问题案例」&#xff0c;介绍引入「负载均衡」的影响介绍并展示 ShardingSphere 分布式数据库在云上的「一站式解决方案」 文章目录Shardi…

LED背光车载驱动IC 可支持48通道

特性电源电压范围-VDD:3.3V~5.5V-VLED:27V(max)48 个恒流输出通道- 通道恒流输出范围 0~50mA一 通道间电流输出偏差小于3%- 芯片间电流输出偏差小于 3%Low Knee Voltage:0.55V小于20mA0.6V 大于20mA最大支持4扫&#xff0c;内嵌行控制信号通道灰度实现-支持 PWM/PAMPWM驱动 -灰…

云帆文档管理系统版本更新说明:v4.6.0

一、新增及优化功能资料管理新增打包下载管理端增加资料查阅菜单&#xff0c;管理端和用户端用户有同样的查阅权限&#xff0c;方便其快速的查阅企业的资料信息前端下载文档格式添加下载水印&#xff0c;水印显示的是下载的用户和日期采购合同增加智能识别功能资料管理添加关键…

KPI考核系统实战之二:swagger框架

KPI考核系统实战之二&#xff1a;swagger框架一、asp.net core 3.1二、融合swagger1.Nuget安装Swashbuckle.AspNetCore2.Startup.cs 注册Swagger服务&#xff0c;使用swagger中间件一、asp.net core 3.1 使用Visual Studio 2022&#xff0c;搭建asp.net core weiapi开发平台&a…

煤矿皮带运行状态监测预警系统 yolov7

煤矿皮带运行状态监测预警系统通过yolov7网络模型深度学习技术&#xff0c;自动对传输皮带运行状态进行实时监测。当监测到皮带撕裂、跑偏、异物、堆煤等异常情况时&#xff0c;立即抓拍预警及时停止皮带同步回传违规信息到后台。介绍Yolo算法之前&#xff0c;首先先介绍一下滑…