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

STL中的函数对象

STL-函数对象

  • 函数对象概念
    • 重载函数调用操作符的类,其对象常称为函数对象
    • 函数对象使用重载的()时,行为类似函数调用,也叫仿函数
  • 本质
    • 函数对象(仿函数)是一个类,不是一个函数—修改算法策略—采用虚拟对象调用
  • 函数对象的使用
  • 理解
    • 仿函数其实就是理解为取出当前容器中的数据,而后在重载()()中进行相关的运算输出,输出的是何种值就是该重载函数的返回值类型
    • 特点
      • 函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值—通过类构造对象后实现函数
      • 函数对象超出普通函数的概念,函数对象可以有自己的状态—可以有自己的属性,因为自身就是一个类
      • 函数对象可以作为参数传递
  • 谓词
    • 概念
      • 返回bool类型的仿函数称为谓词
      • 如果operator()接受一个参数,那么叫做一元谓词
      • 如果operator()接受两个参数,那么叫做二元谓词
  • 内建函数对象—已经存在的仿函数
    • 概念
      • STL内建了一些函数对象
    • 分类
      • 算术仿函数
      • 关系仿函数
      • 逻辑仿函数
    • 用法
      • 这些仿函数所产生的对象,用法和一般函数完全相同
      • 使用内建函数对象,需要引入头文件#include< functional >
  • 算术仿函数
    • 功能
      • 实现四则运算
      • 其中negate是一元运算,其他都是二元运算
  • 四则运算仿函数原型
    • 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 >—取反仿函数
      void test(void){negate<int>n;cout << n(50) << endl;plus<int>p;cout << p(10, 20) << endl;}
    
  • 关系运算仿函数
    • template< class T > bool equal_to< T >—等于
    • template< class T > bool no_equal_to< T >—不等于
    • template< class T > bool greater< T >—大于
    • template< class T > bool greater_equal < T >—大于等于
    • template< class T > bool less < T >—小于
    • template< class T > bool less_equal < T >—小于等于
      void test(void){vector<int> v;v.push_back(10);v.push_back(30);v.push_back(20);sort(v.begin(), v.end(), greater<int>());//等价于sort(v.begin(), v.end(), mycompare());}
    
  • 逻辑关系仿函数
    • template< class T > bool logical_and< T >—逻辑与
    • template< class T > bool logical_or< T >—逻辑或
    • template< class T > bool logical_not< T >—逻辑非
      void test(void){vector<int> v;v.push_back(true);v.push_back(false);v.push_back(true);//利用逻辑非将容器v搬运到容器v2中vector<int> v2;v2.resize(v.size());//要开辟好transform(v.begin(), v.end(), v2.begin(), logical_not<bool>);}
    

相关文章:

STL中的函数对象

STL-函数对象 函数对象概念 重载函数调用操作符的类&#xff0c;其对象常称为函数对象函数对象使用重载的()时&#xff0c;行为类似函数调用&#xff0c;也叫仿函数 本质 函数对象(仿函数)是一个类&#xff0c;不是一个函数—修改算法策略—采用虚拟对象调用 函数对象的使用理…...

linux下libevent的编译安装

1&#xff0c;官网下载最新的&#xff0c;https://libevent.org/2&#xff0c;将文件解压&#xff0c;虚拟机可以右键解压&#xff0c;也可以用命令解压&#xff0c;tar zxvf libevent.tar.gz&#xff0c;进行解压缩。这里压缩包的名称只是举例&#xff0c;实际它还会带上版本号…...

深度学习部署笔记(十): CUDA RunTime API-2.2流的学习

1. 流的定义 流&#xff08;Stream&#xff09;是一个基于上下文&#xff08;Context&#xff09;的任务管道抽象&#xff0c;是一组由GPU依次执行的CUDA操作序列&#xff0c;其中每个操作可能会使用或产生数据。在一个上下文中可以创建多个流&#xff0c;每个流都拥有自己的任…...

[ROC-RK3568-PC] [Firefly-Android] 10min带你了解I2C的使用

&#x1f347; 博主主页&#xff1a; 【Systemcall小酒屋】&#x1f347; 博主追寻&#xff1a;热衷于用简单的案例讲述复杂的技术&#xff0c;“假传万卷书&#xff0c;真传一案例”&#xff0c;这是林群院士说过的一句话&#xff0c;另外“成就是最好的老师”&#xff0c;技术…...

工作记录:举步维艰的在线 word 之旅 - tinymce

项目中需要实现 “在线编辑 word 模板” 的功能&#xff0c;我打算使用富文本组件 tinymce &#xff0c;因为业务需求比较特殊&#xff0c;研究一下 tinymce 是否能实现。 如何在 vue 项目中引用 tinymce&#xff0c;可以看另一篇文章 《在 vue 项目中使用 tinymce》 &#x…...

动态规划编译距离

583. 两个字符串的删除操作方法&#xff1a;dp状态表示&#xff1a;以i-1和j-1为结尾的字符串world1和world2&#xff0c;抵达相同的字符串所需的最少操作数属性&#xff1a;最小值状态计算&#xff1a;world1[i-1]和world2[j-1]相同dp[i][j] dp[i-1][j-1];world1[i-1]和world…...

Netty 教程 – 解码器详解

TCP以流的方式进行数据传输&#xff0c;上层的应用为了对消息进行区分&#xff0c;往往采用如下方式 固定消息长度&#xff0c;累计读取到长度和定长LEN的报文后&#xff0c;就认为读取到了个完整的消息&#xff0c;然后将计数器位置重置在读取下一个报文内容将回车换行符作为…...

Allegro如何自动添加测试点操作指导

Allegro如何自动添加测试点操作指导 在做PCB设计的时候,在一些应用场合下需要给PCB上的网络添加测试点,如下图 测试点除了可以手动逐个添加之外,Allegro还支持自动添加测试点,具体操作如下 点击Manufacture点击Testprep...

【CSS】CSS 背景设置 ③ ( 背景位置-长度值设置 | 背景位置-长度值方位值同时设置 )

文章目录一、背景位置-长度值设置二、背景位置-长度值方位值同时设置三、完整代码示例一、背景位置-长度值设置 长度值设置 效果展示 : 设置背景位置为具体值 10px 50px : 粉色区域是盒子的区域 , 图片背景位于盒子位置 x 轴方向 10 像素 , y 轴方向 50 像素 ; 在水平方向上 ,…...

AbTest —— 不同场景下的应用模式

文章目录不同人群眼中的 AbTestAbTest 不同的功能倚重用户关联性弱&#xff0c;经典场景为 Feed - 部门组织形式大多非垂直业务用户关联性强&#xff0c;经典场景为 垂类/工具类APP&#xff1b;部门组织形式大多为垂直业务康为定律-组织决定产品形态不同应用模式下服务构建开机…...

fast-api 一款快速将spring的bean发布成接口并生产对应swagger文档调试的轻量级工具

fast-api简介背景开发痛点:分析需求实战fast-api快速上手1. 引入依赖2. FastApiMapping标记service对象3. swagger2/knife4j 在线测试进阶使用开启调试模式支持指定类或包目录发布如何关闭fast-api自定义fast-api的前缀写在最后简介 fast-api 一款快速将spring的bean(service)发…...

以公益之名 让人类发现数学之美

目录 1.品牌理念高举高打 2.创新赛制 赋能品牌 3.全球化的品牌传播 9月26日&#xff0c;2022阿里巴巴全球数学竞赛获奖名单公布&#xff0c;4座金杯分别由平均年龄25岁&#xff0c;来自美国麻省理工学院、美国布朗大学、北京大学在读数学博士斩获。77位获奖者中00后超五成引热…...

JUC并发编程之HashMap(jdk1.7版本)-底层源码探究

目录 JUC并发编程之HashMap(jdk1.7版本)-底层源码探究 HashMap底层源码 - jdk1.7 基本概念 -采取层层递进&#xff0c;问答式 存储Key-Value的结构 常量和成员变量 构造方法 put方法 inflateTable方法 hash方法 indexFor方法 addEntry方法 resize方法 createEntry…...

QT Q_OBJECT 和 signals/slots

Q_OBJECT宏展开 #define Q_OBJECT \ public: \QT_WARNING_PUSH \Q_OBJECT_NO_OVERRIDE_WARNING \static const QMetaObject staticMetaObject; \virtual const QMetaObject *metaObject() const; \virtual void *qt_metacast(const char *); \virtual int qt_metacall(QMetaOb…...

APM新添加UAVCAN设备

简介 UAVCAN是一种轻量级协议,旨在通过CAN总线在航空航天和机器人应用中实现可靠通信。要实现通信&#xff0c;最基本需要data_type_ id, signature、数据结构、设备程序初始化。 添加设备数据结构文件(.uavcan格式) 1.在以下路径添加设备数据结构文件&#xff0c;根据设备类…...

【C++】string类基本用法

文章目录string类基本用法1. 为什么要学习string类&#xff1f;1.1 C语言中的字符串2. 标准库中的string类2.1 string类2.2 string类的常用接口说明小试牛刀1. 仅仅反转字母2. 字符串中第一个唯一字符3. 字符串中最后一个单词的长度string类基本用法 1. 为什么要学习string类&…...

KDZD耐电压高压击穿强度测试仪

一、技术参数 01、输入电压&#xff1a; 交流 220 V。 02、输出电压&#xff1a; 交流 0--50KV ; 直流 0—50kv 。 03、电器容量&#xff1a;3KVA。 04、高压分级&#xff1a;0—50KV&#xff0c;&#xff08;全程可调&#xff09;。 05、升压速率&#xff1a;0.1KV/s-…...

数组和指针面试题的补充(细的抠jio)

生命是一条艰险的峡谷&#xff0c;只有勇敢的人才能通过。 ——米歇潘 说明&#xff1a;用的vs都是x86的环境&#xff0c;也就是32位平台。 建议&#xff1a;对于难题来说&#xff0c;一定要配合画图来解决问题。 第一题&#xff1a; #include<stdio.h> int…...

Java多线程基础

文章目录Java多线程基础一、什么是进程与线程&#xff1f;二、线程和进程的区别【重点】三、线程的创建方式【重点】1. 继承Thread类2. 实现Runnable接口3. lambda 表达式四、Thread的常见属性线程中断自己定义一个标志位Thread类提供的静态方法线程的状态Java多线程基础 一、…...

爆品分析第5期 | 一条视频带货3700+,这款斋月不锈钢厨具套装火了!

俗话说民以食为天&#xff0c;吃在任何一种文化中都占据重要的位置&#xff0c;要做出一道美味佳肴&#xff0c;除了食材、烹饪者的自身厨艺之外&#xff0c;还少不了一口好锅。新冠疫情以来&#xff0c;全世界范围内的封闭让很多人养成了居家做饭的习惯&#xff0c;不仅为厨具…...

团队管理的七个要点

要掌握团队管理的要点和做好团队管理工作&#xff0c;不是一件容易的事&#xff0c;但也远非想象中那么难。首先&#xff0c;我个人比较推荐所有团队管理者都能阅读下《经理人参阅&#xff1a;团队管理》&#xff08;注意该书仅可其官网获得&#xff09;这本佳作。相信会为你带…...

Go语言容器之map、list和nil

一、map map和C中map一样&#xff0c;里面存放的是key-value键值对在Go中map是引用类型&#xff0c;声明语法&#xff1a;var map变量名 map[key的类型]value的类型package mainimport "fmt"func main() {var mp map[string]intmpls : map[string]int{"one&quo…...

软件测试的案例分析 - 闰年1

&#xff08;这是关于博客质量分的测试 https://www.csdn.net/qc) 我们谈了不少测试的名词, 软件是人写的, 测试计划和测试用例也是人写的, 人总会犯错误。错误发生之后, 总有人问: 为什么这个bug 没有测出来啊?! 我们看看一类简单的bug是如何发生的&#xff0c;以及如何预防…...

【强化学习】强化学习数学基础:值函数近似

值函数近似Value Function ApproximationMotivating examples: curve fittingAlgorithm for state value estimationObjective functionOptimization algorithmsSelection of function approximatorsIllustrative examplesSummary of the storyTheoretical analysisSarsa with …...

JVM系列——Java与线程,介绍线程原理和操作系统的关系

并发不一定要依赖多线程(如PHP中很常见的多进程并发)。 但是在Java里面谈论并发&#xff0c;基本上都与线程脱不开关系。因此我们讲一下从Java线程在虚拟机中的实现。 线程的实现 线程是比进程更轻量级的调度执行单位。 线程的引入&#xff0c;可以把一个进程的资源分配和执行调…...

C++打开文件夹对话框之BROWSEINFO

头文件 #include <shlobj.h> #include <windows.h> #include <stdio.h> using namespace std; 案例 string chooseFile(void) {//用户选择的路径&#xff0c;可以是TCHAR szBuffer[MAX_PATH] {0};然后再使用TCHAR 转char字符串&#xff0c;此处可以直接使…...

Nuxt项目配置、目录结构说明-实战教程基础-Day02

Nuxt项目配置、目录结构说明-实战教程基础-Day02一、Nuxt项目结构1.1资源目录1.2 组件目录1.3 布局目录1.4 中间件目录1.5 页面目录1.6 插件目录1.7 静态文件目录1.8 Store 目录1.9 nuxt.config.js 文件1.10 package.json 文件其他&#xff1a;别名二、项目配置2.1 build2.2 cs…...

单链表的头插,尾插,头删,尾删等操作

前言顺序表要求是具有连续的物理空间&#xff0c;并且数据的话是在这些空间当中是连续的存储。但这样会带来很多问题&#xff0c;比如说在头部或者说中间插入的话&#xff0c;效率不是很高&#xff1b;并且申请空间可能需要扩容&#xff0c;并且越往后一般来说都是异地扩容&…...

Qt扫盲-QProcess理论总结

QProcess理论使用总结一、概述二、使用三、通过 Channel 通道通信四、同步进程API五、注意事项1. 平台特性2. 不能实时读取一、概述 QProcess 其实更多的是与外面进程进行交互的一个工具类&#xff0c;通过这个类来启动外部进程&#xff0c;获取这个进程的标准输出&#xff0c…...

JAVA进阶 —— Steam流

目录 一、 引言 二、 Stream流概述 三、Stream流的使用步骤 1. 获取Stream流 1.1 单列集合 1.2 双列集合 1.3 数组 1.4 零散数据 2. Stream流的中间方法 3. Stream流的终结方法 四、 练习 1. 数据过滤 2. 数据操作 - 按年龄筛选 3. 数据操作 - 演员信息要求…...

代做毕业设计网站家具设计/网络营销推广论文

http://campus.chinahr.com/pages/ibm/flash/flash1.asp http://campus.chinahr.com/pages/ibm/flash/flash2.asp http://campus.chinahr.com/pages/ibm/flash/flash4.asp转载于:https://www.cnblogs.com/kapok/archive/2005/11/03/267754.html...

吉林网站建设平台/百度移动端模拟点击排名

转载 网络表示动机 Graph Embedding可以用于真实网络数据&#xff0c;但是效果不好。原因&#xff1a;Network的邻接矩阵并不完整&#xff0c;比如某个元素值为0并不代表这两个节点之间没有关系&#xff0c;而我们要做的就是学习到这个关系&#xff0c;那么我们用什么指标呢&…...

做网站能赚多少/网络技术推广服务

本文提供了有关戴尔固态驱动器(SSD)的常见问题(FAQ)列表。目录&#xff1a;词汇表&#xff1a;数据保留&#xff1a;数据保留是指ROM保持可正确读取的时间范围&#xff0c;也就是芯片不受电力偏压的情况下单元保持其编程状态的时间长度。数据保留很大程度上取决于闪存单元的P/E…...

360免费建站不要钱/2022年十大网络流行语发布

前言 前面介绍的关联容器set、multiset、map和multimap的底层机制都是基于RB-Tree红黑树&#xff0c;虽然能够实现在插入、删除和搜素操作能够达到对数平均时间&#xff0c;可是要求输入数据有足够的随机性。本文介绍的hash table不需要要求输入数据具有随机性&#xff0c;在插…...

四川建设厅网站查询/怎么制作网站教程手机

ACCESS可在菜单上选择[压缩]来压缩当前正打开的数据库&#xff0c;如是我们就可以通过程序临时添加一个工具条按钮&#xff0c;然后使用 SendKeys 来模拟键盘操作&#xff0c;实现压缩当前数据库&#xff0c;压缩后它会重新打开。函数如下&#xff1a;Function Compact() 添加一…...

企业新网站seo推广/原创软文

据称苹果到2020年将在Mac上采用自家的处理器&#xff0c;那么抛弃Intel处理器之后的Mac又会有哪些新优点呢&#xff1f;这里来探讨一下。苹果的A系处理器被视为当下最出色的ARM架构处理器&#xff0c;代表了ARM阵营的最强性能&#xff0c;其当前用于iPhoneX上的A11处理器在性能…...