C++_基本语法笔记_仿函数和算法接口

news2024/11/15 8:32:42

函数对象

概念和使用

  • 切记:仿函数,本质是一个类
  • 因为是一个类,所以要把operator() 放在一个类里面

在这里插入图片描述在这里插入图片描述

像普通函数(需要通过某个类使用)一样使用,并且有返回值:
在这里插入图片描述
内置当前函数对象的状态:
在这里插入图片描述
在这里插入图片描述

函数对象作为参数:
在这里插入图片描述

谓词

  • 返回值一定是bool型
    在这里插入图片描述
  • 返回值为bool的仿函数:
    在这里插入图片描述
  • 使用方法:可以在find_if这种期待 bool 值的地方使用
    在这里插入图片描述* 以后 看到Pred的形参,就是谓词(仿函数)

在这里插入图片描述

  • 二原谓词:可以放在排序中使用。这里MyCompare是匿名函数对象
    在这里插入图片描述在这里插入图片描述

内建函数对象

在这里插入图片描述

算数仿函数

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

关系仿函数

在这里插入图片描述在这里插入图片描述

逻辑仿函数

在这里插入图片描述
在这里插入图片描述

常用算法

在这里插入图片描述

遍历

for_each()
在这里插入图片描述
在这里插入图片描述

transform() 搬运一个容器到另一个
在这里插入图片描述 * 记得要使用resize()提前开辟空间

在这里插入图片描述
下面传入vTarget.begin,即开始迭代器在这里插入图片描述

查找

在这里插入图片描述

find

  • **切记:**返回值是:迭代器位置
    在这里插入图片描述
    在这里插入图片描述
  • 自定义类型:
  1. 在Person类中重载 == ,才能进行自定义类型比较
    在这里插入图片描述
  2. 传入要查找的自定义类型,返回值是迭代器
    在这里插入图片描述

find_if

  • 相比find可以自定义筛选条件
    在这里插入图片描述

  • 返回:迭代器

  • 使用谓词/仿函数

  • 内置类型的谓词:
    在这里插入图片描述

  • 自定义类型的谓词:传入类型是Person,
    在这里插入图片描述在这里插入图片描述

adjacent_find

查找相邻重复元素
在这里插入图片描述在这里插入图片描述

binary_search

二分查找
在这里插入图片描述

  • 内置类型:
    在这里插入图片描述

count

统计数据的个数
在这里插入图片描述

  • 内置类型:
    在这里插入图片描述
  • 自定义数据类型
    在这里插入图片描述自定义类型,要在Person类型中,添加重载==(下图中忘记添加const Person &p,防止改变原值)

在这里插入图片描述

count_if

  • 统计满足某个条件的个数

这种 " if ",都要写仿函数,返回bool值来判断

  • 仿函数:
    在这里插入图片描述
  • 自定义类型
    在这里插入图片描述在这里插入图片描述

排序

在这里插入图片描述

sort

  • 默认升序
    在这里插入图片描述这里用的greater,也就是期望前面大于后面
    在这里插入图片描述

random_shuffle

  • 指定范围调换次序
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

merge

  • 合并两个有序容器合并后也有序
    在这里插入图片描述

在这里插入图片描述

reverse

  • 反转指定范围

在这里插入图片描述
在这里插入图片描述

拷贝和替换

在这里插入图片描述

copy

在这里插入图片描述在这里插入图片描述

replace

在这里插入图片描述
在这里插入图片描述

replace_if

带有if的要写谓词
在这里插入图片描述

谓词:
在这里插入图片描述
在这里插入图片描述

swap

  • 互换两个容器内部的元素(两个容器类型相同,都是List或者都是Vector
  • 容器大小不同也可以交换
    在这里插入图片描述
    在这里插入图片描述

算数生成算法

在这里插入图片描述

accumulate

  • 自动求和

在这里插入图片描述

在这里插入图片描述

fill

  • 填充某个数值

在这里插入图片描述

在这里插入图片描述

集合算法

在这里插入图片描述

set_intersection

  • 必须有序容器

在这里插入图片描述

  • 开辟较小空间
  • 返回值是目标容器的End
  • 用目标End作为结束

在这里插入图片描述

set_union

在这里插入图片描述

在这里插入图片描述

set_difference

在这里插入图片描述

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

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

相关文章

基于Springboot的多功能智能点餐小程序/基于微信小程序的点餐系统

摘要 计算机网络如果结合使用信息管理系统,能够提高管理员管理的效率,改善服务质量。优秀的智能点餐系统能够更有效管理用户智能点餐业务规范,帮助管理者更加有效管理用户智能点餐,可以帮助提高克服人工管理带来的错误等不利因素。…

牛客网SQL进阶135 :每个6/7级用户活跃情况

每个67级用户活跃情况_牛客题霸_牛客网 0 问题描述 基于用户信息表user_info、、试卷作答记录表exam_record、题目练习记录表practice_record,统计 每个6/7级用户总活跃月份数、2021年活跃天数、2021年试卷作答活跃天数、2021年答题活跃天数,结果 按照总…

C语言典型例题41

《C程序设计教程(第四版)——谭浩强》 习题3.1 写出下列各个表达式的值。设a3,b4,c5。 (1) ab>c && bc (2) a||bc && b-c (3) !(a>b) && !c || 1 (4) …

遗传算法原理与实战(python、matlab)

遗传算法 1.什么是遗传算法 遗传算法(Genetic Algorithm,简称GA)是一种基于生物进化论和遗传学原理的全局优化搜索算法。它通过模拟自然界中生物种群的遗传机制和进化过程来解决复杂问题,如函数优化、组合优化、机器学习等。遗传…

CTFHUB-技能树-Web题-RCE(远程代码执行)-远程包含-命令注入-综合过滤练习

CTFHUB-技能树-Web题-RCE(远程代码执行)-远程包含-命令注入-综合过滤练习 根据题目提示 以及代码 法1: 分隔符可以使用%0a代替 若直接使用文本框上传命令会导致字符被转义,直接访问URL payload: /?ip127.0.0.1%…

docker部署Mongodb后输入命令报错?

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

vue实现动画

方法一: 先理解事件发生的过程,v-enter,v-enter-to,v-leave,v-leave-to。其中v-enter,v-leave-to代表开始以及结束时的状态。v-enter-active,v-leave-active代表动画的过程。 定义动画第一步把要做动画的语句添加到transition中,其中name可…

使用docxtemplater-image-module-free时支持动态获取图片大小

使用docxtemplater-image-module-free时支持动态获取图片大小 1、问题背景 在使用docxtemplater-image-module-free生成模板图片时,写死了其中一个函数 getSize() {return [150, 150]; },导致图片都是一个大小,且被拉扯的变形了 2、报错信息 在去掉…

C++——入门基础(上)

目录 一、C参考文档 二、C在工作领域的应用 三、C学习书籍 四、C的第一个程序 五、命名空间 (1)namespace的定义 (2)命名空间的使用 六、C的输入和输出 七、缺省函数 八、函数重载 九、写在最后 一、C参考文档 (1)虽…

二叉树《数据结构》

二叉树 1. 树概念及结构1.1 树的概念1.2树的概念1.3 树的表示 2. 二叉树概念及结构2.1 二叉树概念2.4 二叉树的性质练习 3. 二叉树顺序结构及实现3.1 二叉树的顺序结构3.2堆的结构及概念练习3.3堆的实现3.3.1堆的向下调整算法3.3.2堆的创建3.3.3 堆的插入3.3.4 堆的删除3.3.5堆…

C2M商业模式分析与运营平台建设解决方案(五)

C2M商业模式通过直接对接消费者需求与制造商,实现了生产与市场需求的精准匹配,本文提出的解决方案重点在于构建一个智能化运营平台,通过集成先进的大数据分析、人工智能技术和灵活的供应链管理系统,全面提升需求预测的准确性、生产…

【若依框架】代码生成详细教程,15分钟搭建Springboot+Vue3前后端分离项目,基于Mysql8数据库和Redis5,管理后台前端基于Vue3和Element Plus,开发小程序数据后台

今天我们来借助若依来快速的搭建一个基于springboot的Java管理后台,后台网页使用vue3和 Element Plus来快速搭建。这里我们可以借助若依自动生成Java和vue3代码,这就是若依的强大之处,即便你不会Java和vue开发,只要跟着石头哥也可…

loadlibrary failed with error 126:找不到指定模块

买了一张w4300回来装到nas上,核显HD630输出的 打开cad的时候发现图形显卡是hd630,w4300一直没有被驱动,于是去设置里面将cad强行用高性能打开 结果一直报错:loadlibrary failed with error 126:找不到指定模块 网上搜索了半天&am…

招生简章不会设计?这个网站可以供你参考

招生简章是学校与潜在学生之间的第一座桥梁,它的设计直接影响到学校的形象和招生效果。如果你在设计招生简章时感到困惑,不妨参考以下几个要点,让你的招生简章更加吸引人。 1.明确目标受众:在设计招生简章之前,首先要明…

项目实战:Qt+Opencv相机标定工具v1.3.0(支持打开摄像头、视频文件和网络地址,支持标定过程查看、删除和动态评价误差率,支持追加标定等等)

若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/141334834 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、Op…

运维小技能:通过调整JVM的默认内存配置来解决内存溢出(‌OutOfMemoryError)‌或栈溢出(‌StackOverflowError)‌等错误

文章目录 引言I 调整JVM的默认堆内存配置1.1 java命令启动jar包时配置JVM 的内存参数1.2 基于Tomcat服务器部署的java应用,配置JVM 的内存参数II 案例: Linux 操作系统设置tomcat的 JVM 的内存参数查找Tomcat位置: 快速定位服务状态和部署位置具体配置步骤扩展: 监测Nginx访…

配置stm32cubemx采集stm32H743IIT6,通过DMA实现多通道和多模块ADC的采集,亲测有效!

之前写到stm32cubemx通过阻塞实现单通道和多通道的ADC的采集。 本文分享通过DMA实现单模块多通道和多模块多通道的ADC采集。 stm32cubemx的版本6.10.0。 一、DMA采集多通道ADC数据 阻塞采集是每次采集adc数据,cpu死等,直到采集完或者在设定时间超时没…

不能使用乘除法、for、while、if、else、switch、case求1+2+3+...+n

求123...n_牛客题霸_牛客网 (nowcoder.com) 描述 求123...n&#xff0c;要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句&#xff08;A?B:C&#xff09;。 数据范围&#xff1a; 0<n≤2000<n≤200 进阶&#xff1a; 空间复杂度 O(1)O(…

PCRNet: Point Cloud Registration Network using PointNet Encoding 论文解读

目录 一、导言 二、先导知识 1、Frobenius范数 三、相关工作 1、点云配准工作 2、PointNet 3、基于深度学习的点云配准 四、PCRNet 1、PCRNet 2、Iterative PCRNet 3、损失函数 五、实验 一、导言 本论文收录于CVPR2019&#xff0c;本论文提出了一种依赖PointNet网…

快排补充(挖坑法,lomuto前后指针,非递归法)

挖坑法 挖坑法动态示意图 挖坑法方法分析 创建左右指针。⾸先从右向左找出⽐基准⼩的数据&#xff0c;找到后⽴即放⼊左边坑中&#xff0c;当前位置变为新 的"坑"&#xff0c;然后从左向右找出⽐基准⼤的数据&#xff0c;找到后⽴即放⼊右边坑中&#xff0c;当前位置…