c++11终章

作者:牢姐与蒯日期:2026/7/23

一.lambda

1.lambda的语法

①.定义

lambda表达式是一个匿名函数对象,跟普通函数只能定义在全局,或者类里不同,它能够定义在函数的内部。

②.类型

lambda表达式在使用层而言没有类型,一般用auto或者模板参数定义的对象去接收lambda对象。

③.lambda的格式

表达式格式跟普通函数相比,少了函数名(匿名),多了捕捉列表。

一个小示例:

注:此处修正一下,返回值部分是“->返回值类型”。

2.lambda的用途

从图中可看出利用lambda写出的控制升降序的可读性大大提升

3.capture-list(捕捉列表) 重点!!!!

3-1.用法

lambda能够直接使用全局域或者lambda局部域内的变量,要想使用其他局部域的变量,需要借助捕捉列表。注意,同一个变量不能被同时捕捉两次!!!!

3-2.分类

捕捉分为三个大类:显示捕捉隐式捕捉以及混合使用显示和隐式捕捉。

3-3.显示捕捉

①.其中显示捕捉可分为值捕捉引用捕捉

②.引用捕捉的引用有些特殊,不需要变量的类型,只需要一个“&+变量"就行了。

③.由于值捕捉过来的变量是被const修饰的,因此无法修改,而引用捕捉过来的变量可以修改。

但实在要修改值捕捉的变量,可以在函数体前添加一个关键字——mutable,取消const:

不过由于是传值捕捉,变量在类域内大小改变,但出了类域,变量大小不变。

④.引用捕捉到的变量在类域内修改后,其在类域外变量的大小也会改变,因为捕捉到的是个引用,是个别名。

3-4.隐式捕捉

①.隐式捕捉仍旧分成隐式值捕捉隐式引用捕捉

②.隐式值捕捉

示例:

③.隐式引用捕捉

示例:

3-5.混合使用显示和隐式捕捉

形式Ⅰ.个别(a,b)显示传值,其他全为引用捕捉,因此用上隐式传引用,自动捕捉c,d:

形式Ⅱ.个别传值引用捕捉,其余全是传值,因此用上隐式传值捕捉,自动捕捉c,d:

4.lambda的原理

①.其原理与范围for相似,二者都属于上层的东西,在汇编层面根本就没有范围for和lambda的说法,lambda的底层是个仿函数对象,写一个lambda后,编译器会自动生成一个对应仿函数的类。

②.并且类名由编译器决定,下面蓝色区域就是类名,由**lambda+后面uuid(一串字符串)**组成,是独一无二的。

③.lambda的参数,返回值类型和函数体就是其对应仿函数中operator()的参数,返回值类型和函数体。而捕捉列表是仿函数类的成员变量。

二.包装器

1.function

①.定义

注意:使用function的时候要包含头文件:<functional>

②.格式

③.意义

统一可调用对象的类型。

由图可知,f,Functor(),lambda这三个可调用对象的类型必然是不同的,要想同一类型,就用function,包装后的f1,f2,f3的类型是相同的

④.包装成员函数

Ⅰ.需要指定类域

Ⅱ.非静态成员函数还必须在类域前加"&"(取地址)操作符,静态的可加可不加,建议也加上。

Ⅲ.但即便有了取地址操作符,还是会报错,这是什么原因?原因在于非静态成员函数的参数里还有隐藏的**this指针,**所以包装时,还需要在可变参数模板里加上对象或者对象的指针

2.bind

①.定义

②.作用

Ⅰ.调整参数顺序(意义不大)

Ⅱ.调整参数个数

注意:_n代表第n个实参,因此sub6第三个参数是_2的1而不是_3

三.类的新功能

1.默认移动构造和移动赋值

c++11增加了两个默认成员函数,即默认移动构造和移动赋值。这俩玩意在笔者c++11(二)里的第2节和c++11(一)的第6节都提过一嘴,这里还剩下部分内容。

触发系统自动生成移动构造和移动赋值的条件:

2.default和delete

3.新容器

4.新接口


c++11终章》 是转载文章,点击查看原文


相关推荐


GitHub 热榜项目 - 周榜(2026-07-11)
CoderJia_2026/7/15

GitHub 热榜项目 - 周榜(2026-07-11) 生成于:2026-07-11 统计摘要 共发现热门项目: 21 个 Token赞助:siliconflow 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 本期热点趋势总结 本期 GitHub AI 热榜很清晰:Agent 化、低成本推理、隐私本地化、办公自动化正在加速融合。🧠 代表项目里,addyosmani/agent-skills、alir


Objective-C 之 Block 详解
唐诺2026/7/7

iOS核心技能:Objective-C Block完全详解 从语法到原理,从内存到选型,一篇打通Block所有知识点 Block是Objective-C最核心的特性之一,也是每个iOS开发者必须掌握的知识点。它既是回调利器,也是内存陷阱的高发区。本文将系统讲解Block的一切,并在最后与Method进行全方位对比,帮助你彻底掌握Block的选型与使用。 一、什么是Block? Block是Objective-C对C语言函数指针的扩展,它本质上是一个带有自动变量值的匿名函数对象。简单理解:B


用户说 App 卡,但说不清在哪?我把 Flutter 监控 SDK 升级成了链路观测工作台
小林的编程开发日记2026/6/29

用户说 App 卡,但说不清在哪?我把 Flutter 监控 SDK 升级成了链路观测工作台 大家好,去年我写过一篇 Flutter 全链路监控 SDK 那一版可以理解成 v1。 v1 的目标很直接:Flutter App 里发生了什么问题,我要尽可能采到。 比如: Flutter framework error; Dart uncaught error; 启动耗时; 页面加载耗时; Dio / http 请求耗时和状态码; 页面 PV 和停留时长; 用户关键点击; Flutter fram


Python 五大核心数据结构完全指南:列表(List)、字符串(String)、元组(Tuple)、集合(Set)、字典(Dictionary)
FrontPy2026/6/20

Python 核心数据结构完全指南 一、列表 (List) 1.1 定义与特点 列表是 Python 中最常用的数据容器,可以一次性存储多个元素。 定义: 列表名 = [元素1, 元素2, 元素3, ...] 例如: s = [54, 15, 75, 108, 23, 78, 75] 特点: 可以存储不同类型的元素(数字、字符串、布尔值等混合存放)。元素有序,排列顺序固定。元素可以重复。元素可以被修改(增、删、改)。属于序列类型:可通过索引访问。 1.2 列表的索引 正向索引:从 0 开始,


prototype 注入到 singleton 里,prototype是否还是线程安全的
swordbob2026/6/12

"如果 prototype Bean 内部没有共享状态,自身是线程安全的。但 Spring 容器对 prototype 的多例行为有'陷阱',可能导致实际使用中不安全。" 展开讲: prototype 注入到 singleton 里的线程安全分析 一、prototype Bean 自身的线程安全性 1.1 prototype 本身是"独立实例"(这个是安全的) @Service@Scope("prototype")public class ShoppingCart { priv


局部两极分析破解数学建模难题
luj_17682026/6/5

当前博文未提及该问题,以下是基于C知道的知识内容为您回答 在数学建模中,通过“局部两极分析”实现问题求解的突破,其核心思想是:在复杂系统的局部或特定维度上,分别考察其极大化与极小化两种极端状态或趋势,通过分析这两种对立极值的行为、约束与相互作用,来洞察系统的本质结构、关键矛盾与优化路径,从而为全局问题的求解找到突破口。 这种方法融合了优化理论、博弈论和系统分析的思想。 一、 “局部两极分析”的核心逻辑与步骤 “局部两极分析”并非一个固定的算法,而是一种建模策略与思维框架。其通用实施流程可概


ASP.NET Core Razor 语法简述
叫我少年2026/5/30

如果写过 HTML 里嵌 <?php ?>​ 的页面吧?Razor 干的事差不多,只不过嵌入式用的是 C#。Razor 标记可以塞进 .cshtml​(MVC 视图/Razor Pages)或者 .razor​(Blazor 组件),写法跟 Vue 的模板语法有几分神似。下面从最基础的开始,一路讲到那些容易被忽视的坑。 1. 怎么输出 HTML Razor 的默认语言就是 HTML,你写 <p>Hello</p>​,它就乖乖输出 <p>Hello</p>​。但是想混入 C# 逻辑的时候,就得靠


Layui结合springboot读取返回值,前端展示简单示例
一个心烑2026/5/7

一、SpringBoot 后端接口 + Layui 前端页面实现 1 后端返回 JSON 数据 2 前端 Layui 表格展示数据 3 前端表单提交保存到后端 4 完整的异步请求(Ajax)处理 项目结构(标准 SpringBoot): springboot-layui-demo/ ├── src/main/java/com/demo/ │ ├── controller/ │ │ └── UserController.java # 接口控制器 │ ├── entity/ │


算个账也要开顶配 AI?我让 AI 自己劝我换了个小的
小墨同学boy2026/4/28

其实我自己每个月在 AI 上花的钱不少,Claude、GPT、GLM 都有订阅。但其实有很大一部分预算其实是花在处理生活琐事上的——记账、外卖归类、做一个消费数据分析。这种活差不多每天都得跑一遍,所以token 烧得也不少,尤其是有时候开了深度思考的模型反而更容易给错数据。 后来我才反应过来,手里订阅一个不少,结果我一直在拿 Opus 的钱让它当我的计算器。有点奢侈了,所以我准备切换思路看看有没有节省token的办法。 一、我发现一个反直觉的事 在日常生活当中,我的直觉一直是有钱就上好的贵的效果


2026 年前端工程师面试:一份来自面试官视角的真实复盘
怕浪猫2026/4/19

前言:为什么我要写这篇文章 前两天和一个在高校和企业都面试过不少候选人的"面试官老炮"聊天,他听过太多候选人抱怨面试内容脱离实际、工作用不到。也听过面试官抱怨候选人只会背题、动手能力差。有意思的是,这两拨人的抱怨,往往都对。 今天我想换个视角——不站在候选人角度刷题,也不站在理论派角度讲八股文,而是站在有实际招聘需求、真正要带团队干活的面试官视角,聊聊 2026 年的前端工程师面试,到底在考什么、为什么这么考。 核心结论先行 2026 年的前端面试,考察维度已经发生了结构性变化:

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 聚合阅读