C++函数对象
任何定义了函数调用操作符的对象都是函数对象。C++ 支持创建、操作新的函数对象,同时也提供了许多内置的函数对象。
函数包装器
std::function 提供存储任意类型函数对象的支持。
function (C++11) | 包装具有指定函数调用签名的任意类型的可调用对象 (类模板) |
bad_function_call (C++11) | 调用空的 std::function 时抛出的异常 (类) |
mem_fn (C++11) | 从成员指针创建出函数对象 (函数模板) |
函数调用
std::invoke 能以给定参数调用任何可调用 (Callable) 对象。
invoke (C++17) | 以给定实参调用任意可调用 (Callable) 对象 (函数模板) |
恒等
std::identity 是恒等函数对象:它返回其不修改的参数。
identity (C++20) | 返回其未修改的参数的函数对象 (类) |
部分函数应用
std::bind_front 与 std::bind 提供部分函数应用的支持,即绑定参数到函数以创建新函数。
bind_front (C++20) | 按顺序绑定一定数量的参数到函数对象 (函数模板) |
bind (C++11) | 绑定一或多个实参到函数对象 (函数模板) |
is_bind_expression (C++11) | 指示对象为 std::bind 表达式,或能被用作这种表达式(类模板) |
is_placeholder (C++11) | 表明一个对象是标准占位符,或者可以用作标准占位符 (类模板) |
定义于命名空间 | |
_1, _2, _3, _4, ... (C++11) | 用作 std::bind 表达式中的未绑定实参的占位符(常量) |
取反器
std::not_fn 创建对传递给它的可调用对象的结果取反的函数对象。
not_fn (C++17) | 创建返回其保有的函数对象的结果之补的函数对象 (函数模板) |
搜索器
提供实现数种字符串搜索算法的搜索器。它们能直接使用或用于 std::search 。
default_searcher (C++17) | 标准 C++ 库搜索算法实现 (类模板) |
boyer_moore_searcher (C++17) | Boyer-Moore 搜索算法实现 (类模板) |
boyer_moore_horspool_searcher (C++17) | Boyer-Moore-Horspool 搜索算法实现 (类模板) |
引用包装器
引用包装器允许存储引用到可复制的函数对象中:
reference_wrapper (C++11) | 可复制构造 (CopyConstructible) 且可复制赋值 (CopyAssignable) 的引用包装器 (类模板) |
refcref (C++11)(C++11) | 创建具有从其实参推导的类型的 std::reference_wrapper (函数模板) |
unwrap_referenceunwrap_ref_decay (C++20)(C++20) | 获取包装于 std::reference_wrapper 的引用类型 (类模板) |
运算符函数对象
C++ 针对常用的算术和逻辑运算定义了很多函数对象:
算术运算
plus | 实现 x + y 的函数对象 (类模板) |
minus | 实现 x - y 的函数对象 (类模板) |
multiplies | 实现 x * y 的函数对象 (类模板) |
divides | 实现 x / y 的函数对象 (类模板) |
modulus | 实现 x % y 的函数对象 (类模板) |
negate | 实现 -x 的函数对象 (类模板) |
比较
equal_to | 实现 x == y 的函数对象 (类模板) |
not_equal_to | 实现 x != y 的函数对象 (类模板) |
greater | 实现 x > y 的函数对象 (类模板) |
less | 实现 x < y 的函数对象 (类模板) |
greater_equal | 实现 x >= y 的函数对象 (类模板) |
less_equal | 实现 x <= y 的函数对象 (类模板) |
逻辑运算
logical_and | 实现 x && y 的函数对象 (类模板) |
logical_or | 实现 x || y 的函数对象 (类模板) |
logical_not | 实现 !x 的函数对象 (类模板) |
位运算
bit_and | 实现 x & y 的函数对象 (类模板) |
bit_or | 实现 x | y 的函数对象 (类模板) |
bit_xor | 实现 x ^ y 的函数对象 (类模板) |
bit_not (C++14) | 实现 ~x 的函数对象 (类模板) |
有制约的比较函数对象 (C++20)
C++20 定义一组有制约的比较函数对象。相等运算符 (ranges::equal_to
与 ranges::not_equal_to
) 要求参数类型实现 equality_comparable_with 。关系运算符( ranges::less
、 ranges::greater
、 ranges::less_equal
及 ranges::greater_equal
)要求参数类型实现 totally_ordered_with 。
ranges::equal_to (C++20) | 实现 x == y 的函数对象 (类) |
ranges::not_equal_to (C++20) | 实现 x != y 的函数对象 (类) |
ranges::less (C++20) | 实现 x < y 的函数对象 (类) |
ranges::greater (C++20) | 实现 x > y 的函数对象 (类) |
ranges::less_equal (C++20) | 实现 x <= y 的函数对象 (类) |
ranges::greater_equal (C++20) | 实现 x >= y 的函数对象 (类) |
旧式绑定器与适配器
早期提供功能支持的几个工具在 C++11 中弃用,并于 C++17 中移除(旧否定器于 C++17 中弃用并于 C++20 中移除):
基类
unary_function (C++11 中弃用)(C++17 中移除) | 与适配器兼容的一元函数基类 (类模板) |
binary_function (C++11 中弃用)(C++17 中移除) | 与适配器兼容的二元函数基类 (类模板) |
绑定器
binder1stbinder2nd (C++11 中弃用)(C++17 中移除) | 持有一个二元函数及其实参之一的函数对象 (类模板) |
bind1stbind2nd (C++11 中弃用)(C++17 中移除) | 将一个实参绑定到二元函数 (函数模板) |
函数适配器
pointer_to_unary_function (C++11 中弃用)(C++17 中移除) | 适配器兼容的包装,用于包装一元函数的指针 (类模板) |
pointer_to_binary_function (C++11 中弃用)(C++17 中移除) | 适配器兼容的包装,用于包装二元函数的指针 (类模板) |
ptr_fun (C++11 中弃用)(C++17 中移除) | 从函数指针创建与适配器兼容的函数对象包装器 (函数模板) |
mem_fun_tmem_fun1_tconst_mem_fun_tconst_mem_fun1_t (C++11 中弃用)(C++17 中移除) | 指向零元或一元成员函数指针的包装器,可以一个对象指针调用 (类模板) |
mem_fun (C++11 中弃用)(C++17 中移除) | 从成员函数指针创建包装器,可以一个对象指针调用 (函数模板) |
mem_fun_ref_tmem_fun1_ref_tconst_mem_fun_ref_tconst_mem_fun1_ref_t (C++11 中弃用)(C++17 中移除) | 指向零元或一元成员函数指针的包装器,可以一个对象引用调用 (类模板) |
mem_fun_ref (C++11 中弃用)(C++17 中移除) | 从成员函数指针创建包装器,能以一个对象引用调用 (函数模板) |
unary_negate (C++17 中弃用)(C++20 中移除) | 包装器函数对象,返回所持有的一元谓词的补 (类模板) |
binary_negate (C++17 中弃用)(C++20 中移除) | 包装器函数对象,返回所持有的二元谓词的补 (类模板) |
not1 (C++17 中弃用)(C++20 中移除) | 构造定制的 std::unary_negate 对象 (函数模板) |
not2 (C++17 中弃用)(C++20 中移除) | 构造定制的 std::binary_negate 对象 (函数模板) |
相关文章:
C++函数对象
任何定义了函数调用操作符的对象都是函数对象。C 支持创建、操作新的函数对象,同时也提供了许多内置的函数对象。 函数包装器 std::function 提供存储任意类型函数对象的支持。 function (C11) 包装具有指定函数调用签名的任意类型的可调用对象 (类模板) bad_funct…...

插件化简单介绍
关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 未经允许不得转载 目录 一、导读二、概览三、常见的插件化方案…...

[Beego]1.Beego简介以及beego环境搭建,bee脚手架的使用,创建,运行项目
一.Beego介绍 Beego是一个开源的基于Golang的MVC框架,主要用于Golang Web开发,Beego可以用来快速开发API、Web、后端服务等各种应用。 Golang 的Web开发框架有很多,从 github star 数量来看Gin>Beego>lris>Echo>Revel>Buffalo 目前国内用的比较多的就…...
Tomcat 静态资源访问与项目根路径设置(AI问答)
一个静态文件,放在Tomcat中,希望能够通过网络访问,应该放在哪里? 在Apache Tomcat中,如果想要部署静态文件(例如HTML、CSS、JavaScript、图片等)并能通过网络访问,通常需要将这些文…...

Docker实战09|使用AUFS包装busybox
前几篇文章中,重点讲解了如何实现构建容器,需要回顾的小伙伴可以看以下文章: 《Docker实战06|深入剖析Docker Run命令》《Docker实战07|Docker增加容器资源限制》《Docker实战08|Docker管道及环境变量识别…...
什么是uni.request()?如何使用它?
uni.request()是uni-app提供的一个用于发起网络请求的API。 使用uni.request()的步骤如下: 在需要发起网络请求的页面中引入uni.request()方法。 调用uni.request()方法,并传入相应的参数,包括请求地址、请求方法、请求头部和请求数据等。 …...

用React给XXL-JOB开发一个新皮肤(一):环境搭建和项目初始化
目录 一. 简述二. Fork 项目三. 搭建开发环境四. 初始化皮肤项目五. 添加相关依赖六. 预览 一. 简述 大名鼎鼎的 xxl-job 任务调度中心我们应该都使用过,项目地址:xxl-job。它是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单…...

华为常用的命令——display,记得点赞收藏!
华为设备提供了多条display命令用于查看硬件部件、接口及软件的状态信息。通常这些状态信息可以为用户故障处理提供定位思路。 常用的故障信息搜集的命令如下: 路由器常用维护命令表 交换机常用的故障信息搜集 关注 工 仲 好:IT运维大本营,获…...

Costco攻入山姆大本营
01 Costco深圳店开业火爆 “我今天不去Costco,早上还没开业,路上就已经堵车了,看来今天人很多,过几天再去”,原本计划在Costco开业当天去逛逛的张芸(化名)无奈只能放弃。 家住在Costco深圳店旁…...
什么是常量?如何区分常量和变量?
一、问题 什么是常量,什么是变量?怎样区分⼆者? 二、解答 1. 常量与变量 (1)常量即其值在程序运⾏的过程中是不可以改变的,如123,-4567 为数值常量; (2)变量…...
uniapp返回上一页并刷新数据
在uniapp中,返回页面时onLoad是不会触发的 如果只需要在特定情况下返回上一页才需要刷新数据 可以使用$emit和$no去解决 例如:注册完成后返回到首页并隐藏注册按钮,register.vue和index.vue register.vue <template><view clic…...

LeetCode 0083.删除排序链表中的重复元素:模拟
【LetMeFly】83.删除排序链表中的重复元素:模拟 力扣题目链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-list/ 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的…...

Javaweb之SpringBootWeb案例新增部门的详细解析
2.3 删除部门 查询部门的功能我们搞定了,下面我们开始完成删除部门的功能开发。 2.3.1 需求 点击部门列表后面操作栏的 "删除" 按钮,就可以删除该部门信息。 此时,前端只需要给服务端传递一个ID参数就可以了。 我们从接口文档中也…...

基于微信小程序的音乐平台 开源项目
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首音乐4.2 新增音乐4.3 新增音乐订单4.4 查询音乐订单4.5 新增音乐收藏 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的音乐平台,包含了音乐…...

uniapp 微信小程序跳转外部链接
一、背景: 开发小程序时,跳转到内部路径通常会使用:uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab等方法,可以跳转到pages.json中已经注册的页面 uni.navigateTo(OBJECT) | uni-…...

【STM32】FLASH闪存
1 FLASH闪存简介 本节所指STM32内部闪存,即下载程序的时候,程序存储的地方。(非易失性) STM32F1系列的FLASH包含程序存储器、系统存储器(bootloader,不允许修改)和选项字节三个部分࿰…...

滴水内存地址堆栈
两个十六进制数 刚好是一个字节刚好 DC这的一个字节数据为E4 一个内存地址 后面表示四个字节的数据 所以有八个十六进制的数 BASE是高地址 所以放入一个四字节后就 -4...
Laravel中的lockForUpdate悲观锁
lockForUpdate 是悲观锁,测试就不写了 注意的事项 lockForUpdate 必须在事务中lockForUpdate 被阻塞的查询必须是同样添加了lockForUpdate的语句查询语句走索引,则使用行锁,否则使用表锁 现在举例说明第一项和第二项 开启事务并添加锁 pub…...

BikeDNA(八)外在分析:OSM 与参考数据的比较2
BikeDNA(八)外在分析:OSM 与参考数据的比较2 1.数据完整性 见链接 2.网络拓扑结构 见链接 3.网络组件 本节仔细研究两个数据集的网络组件特征。 断开连接的组件不共享任何元素(节点/边)。 换句话说,…...

28 星际旋转
效果演示 实现了一个太阳系动画,其中包括了地球、火星、金星、土星、水星、天王星、海王星以及火卫二号等行星的动画效果。太阳系的行星都被放在一个固定的容器中,并使用CSS动画来实现旋转和移动的效果。当太阳系的行星绕着太阳运行时,它们会…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...