C++学习日记 Day21:C++11(下)lambda表达式和function包装器
## 今天学了什么今天学习C11的lambda表达式和function包装器。## 可调用对象概念在C中有一类对象可像函数一样调用分类①函数指针using prt void(*)(int, string);prt f1 fun;f1(1, 函数指针);②仿函数 --有 operator的类对象Person p;p(2);③可以被转换成函数指针的类对象 operator ruturn infoPerson p2;funcptr ff p2;ff(3, 转换成函数指针的类对象);④类成员 静态成员函数指针using Person_ptr void(*)(int, string);funcptr f2 Person::info;f2(4, 静态成员函数指针);⑤非静态成员函数指针using Person_ptr2 void(Person::*)(int, string);Person_ptr2 f3 Person::hello;Person a;(a.*f3)(10, 非静态成员函数指针);⑥类成员变量指针using Person_pt int Person::* ;Person_pt f4 Person::num;a.*f4 100;## function包装器头文件functional定义一个类模板可以包装任意可调用对象普通函数、静态成员、仿函数、lambda、bind结果通过指定他的模板参数可以用统一的方式处理它们并允许保存和延迟执行。优点统一类型不同种类可调用对象包装后变成同一种 function 类型可存储保存可调用对象延后执行可放进容器方便回调可作为函数参数传递回调场景首选调用接口统一都用调用不用关心底层是什么注空function调用会抛异常。语法function返回值类型(参数类型列表)使用方法①包装普通函数functionvoid(int, string) f1 printTest;f1(1, 包装的普通函数调用);②包装类的静态函数functionvoid(int, string) f2 Person::info;f2(2, 包装类的静态函数调用);③包装仿函数Person p;functionvoid(int, string) f3 p;f3(3, 包装的仿函数调用);④包装转换为函数指针的对象Person p2;ptr mptr p2;functionvoid(int, string) f4 mptr;f4(4, 转换为函数指针的对象);## 绑定器定义将可调用对象与其他参数一起进行绑定。作用将可调用对象与其他参数一起进行绑定成为一个仿函数将多元可调用对象转换成一元或者n-1元可调用对象。语法分类①绑定非类成员/静态类成员;bind(printTest, 1, placeholders::_1)(绑定非类成员);//placeholders::_1 占位符 传入的第一个参数②绑定非静态类成员Person t;bind(Person::hello, t, 2, placeholders::_1)(绑定类成员);注绑定了固定的数字后续传进的参数将不会生效。## lambda表达式特点匿名对象不需要写函数名和函数对象简洁避免了代码膨胀可功能分散让开发更高效在需要的时间和地点实现功能闭包使程序更灵活。语法[ ]选项 返回值 { } ; //选项 返回值一般不写常用捕获列表Ⅰ. [ ] 不捕捉任何变量Ⅱ. [ ]值拷贝方式捕获Ⅲ. [ ]引用方式捕获Ⅳ. [ a ]混用方式捕获 除了a 用引用其他都是值拷贝方式捕获参数列表如果没有参数可以不写但最好写上 [ ] { ... }选项mutable修改数据的只读状态为读写状态exception抛出异常。## 包装器和绑定器结合使用绑定器返回值是一个仿函数包装器可接收绑定器的返回值。#includeiostream using namespace std; #includefunctional void output_add(int x, int y) { cout x: x y: y xy x y endl; } void testFunc(int x, int y, functionvoid(int, int) f) { if (x % 2 0) { f(x , y); } } int main() { for (int i 0; i 5; i) { functionvoid(int,int) fbind(output_add, i 1, i 5); testFunc(i, i, f); functionvoid(int, int) f2 bind(output_add, placeholders::_1, placeholders::_1); testFunc(i, i, f2); } return 0; }

相关新闻

一人公司AI工作流:6步实现内容生产去体力化

一人公司AI工作流:6步实现内容生产去体力化

1. 一人公司的内容困局与破局思路一个人做内容,最怕的不是没灵感,而是灵感来了却卡在“执行”上。写一篇长文要三小时,做一张配图要半小时,剪一条短视频要一整个下午,排版发布又要来回切换四五个平台。一天下来&#x…

2026/10/14 3:39:38 阅读更多 →
8765平台前后摄DVDD电压不一致排查与修复指南

8765平台前后摄DVDD电压不一致排查与修复指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 3:38:38 阅读更多 →
Hive分桶原理与实战:Map Join加速和采样优化指南

Hive分桶原理与实战:Map Join加速和采样优化指南

1. 分桶不是“分表”,也不是“分区”:先破除三个最常见误解刚接触 Hive 的人,十有八九会在“分桶(Bucketing)”这个概念上栽跟头。我见过太多次——某开发者在某跨平台系统上线前夜紧急排查查询慢的问题,翻…

2026/10/14 3:38:38 阅读更多 →

最新新闻

Dropout 正则化原理与实战:从过拟合到泛化能力提升

Dropout 正则化原理与实战:从过拟合到泛化能力提升

1. 为什么一个"随手关掉神经元"的操作能成为深度学习的基石第一次在代码里写下nn.Dropout(p0.5)的时候,我其实没太当回事——不就是训练时随机扔掉一半神经元嘛,听起来像个正则化的小把戏。直到有一次复现一篇图像分类论文,模型在训…

2026/10/14 4:24:51 阅读更多 →
从60到150 t/s:Strata推理栈与INT4量化在48G显存上的实战调优

从60到150 t/s:Strata推理栈与INT4量化在48G显存上的实战调优

1. 先说说那三秒:149.7 t/s 砸到眼前那天晚上我蹲在测试机前面,盯着终端里不断滚动的数字,一时没回过神来。屏幕上清清楚楚写着“149.7 t/s”。按标题里的说法,就是那套组合——内部代号 Strata 的推理栈,加上一个叫 q…

2026/10/14 4:24:51 阅读更多 →
Java毕设实战:基于爬虫的题库自动生成系统完整解析

Java毕设实战:基于爬虫的题库自动生成系统完整解析

简介:毕设项目-利用爬虫的题库自动生成系统 是面向计算机相关专业本科生毕业设计场景的完整工程,适用于需要快速搭建可运行题管理平台的Java开发者。针对题库建设中题目来源单一、手工录入效率低等问题,整体以Java为后端核心、Vue为管理端页面…

2026/10/14 4:24:51 阅读更多 →
机械原理课程设计洗瓶机:凸轮机构实现推头匀速回程三倍速

机械原理课程设计洗瓶机:凸轮机构实现推头匀速回程三倍速

简介:基于机械原理的洗瓶机课程设计资料面向机械专业本科生,完整呈现从功能分解、运动方案设计到执行机构选型的全过程,适合完成课程设计或复习机构学知识时参考。内容围绕瓶子推进、旋转与刷洗三大动作展开,明确了推进距离600mm、…

2026/10/14 4:24:51 阅读更多 →
旅游线路查询接口分页漂移导致数据抓取错位的排查与规避

旅游线路查询接口分页漂移导致数据抓取错位的排查与规避

1. 一个看似普通的查询需求,怎么就翻车了事情是这样的,前阵子帮一个做旅游内容聚合的朋友看他们后台的数据对账问题。他们有一个模块是抓取某旅游线路平台(就是那种典型的“黑马旅游网”风格的线路查询站点)的线路数据&#xff0c…

2026/10/14 4:24:51 阅读更多 →
西门子RPC开发实战:从通信接口到产线落地的完整路径

西门子RPC开发实战:从通信接口到产线落地的完整路径

简介:这份西门子RPC开发功能文档面向工业自动化领域的开发者、设备集成工程师与数控系统调试人员,聚焦SINUMERIK 840D/840Di/810D平台下远程过程调用的接口规范与开发方法。文档系统梳理了主机接口、PLC/NCK接口、HMI与NCK/PLC的OEM交互接口等核心模块&a…

2026/10/14 4:23:50 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →