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动画来实现旋转和移动的效果。当太阳系的行星绕着太阳运行时,它们会…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...