c加加11第二弹~

1lambda

1.1.lambda表达式书写格式

[capture-list] (parameters) mutable -> return-type { statement}

1.2lambda表达式各部分说明 

[capture-list] : 捕捉列表,该列表总是出现在lambda函数的开始位置,编译器根据[]来判断接下来的代码是否为lambda函数,捕捉列表能够捕捉上下文中的变量供lambda函数使用。

(parameters):参数列表。与普通函数的参数列表一致,如果不需要参数传递,则可以连同()一起省略

mutable:可选的。如果指定了mutable,那么lambda体内部可以修改通过值捕获的外部变量的值。

->return-type:返回值类型。用追踪返回类型形式声明函数的返回值类型,没有返回值时此部分可省略。返回值类型明确情况下,也可省略,由编译器对返回类型进行推导。

{statement}:函数体。在该函数体内,除了可以使用其参数外,还可以使用所有捕获到的变量。

注意: 在lambda函数定义中,参数列表和返回值类型都是可选部分,而捕捉列表和函数体可以为 空。因此C++11中最简单的lambda函数为:[]{}; 该lambda函数不能做任何事情。

1.3.捕获列表说明

捕捉列表描述了上下文中那些数据可以被lambda使用,以及使用的方式传值还是传引用。

[]:不捕获任何变量

[var]:表示值传递方式捕捉变量var

[=]:表示值传递方式捕获所有父作用域中的变量(包括this)

[&var]:表示引用传递捕捉变量var

[&]:表示引用传递捕捉所有父作用域中的变量(包括this)

[this]:表示值传递方式捕捉当前的this指针

 注意:    a. 父作用域指包含lambda函数的语句块  

  b. 语法上捕捉列表可由多个捕捉项组成,并以逗号分割。

 比如: [=, &a, &b]:以引用传递的方式捕捉变量a和b,值传递方式捕捉其他所有变量[&,a, this]:值传递方式捕捉变量a和this,引用方式捕捉其他变量

c. 捕捉列表不允许变量重复传递,否则就会导致编译错误。

 比如:[=, a]:=已经以值传递方式捕捉了所有变量,捕捉a重复

d. 在块作用域以外的lambda函数捕捉列表必须为空。   

 e. 在块作用域中的lambda函数仅能捕捉父作用域中局部变量,捕捉任何非此作用域或者非局部变量都会导致编译报错。

   f. lambda表达式之间不能相互赋值,即使看起来类型相同。 

2.捕捉列表

lambda表达式中默认只能用lambda函数体和参数中的变量

3默认的移动构造和移动赋值

 默认移动构造、默认移动赋值自动生成的条件

如果需要用一个右值去拷贝构造一个类对象或赋值给一个类对象,则在该类自定义了移动构造函数/移动赋值函数的情况下,会调用该类自定义的移动构造函数/移动赋值函数

而在没有自定义移动构造函数/移动赋值函数的情况下,如果该类自定义了拷贝构造函数/赋值运算符或析构函数之一,都只会调用拷贝构造函数/赋值运算符(前提是形参为const T&而不是T&,因为const T&可以兼容右值实参,而T&不能)而不会生成默认移动构造函数。注意即使没有自定义拷贝构造函数/赋值运算符,只自定义了析构函数,也不会生成默认移动构造函数,这是因为自定义析构函数表明该类在析构时可能需要回收内存,如果生成了默认移动构造函数可能会出错(比如同一地址被释放两次的错误)

没有声明拷贝构造函数

没有声明赋值运算符

没有声明析构函数

 默认移动赋值什么时候会自动生成?

没有声明拷贝赋值函数。 没有声明拷贝构造函数。

没有声明移动构造函数。

移动赋值函数没有隐式声明为delete。

没有声明析构函数。

 

4.STL中的一些变化

 新容器

 

 1、array容器 array就是一个静态数组,其有两个模板参数,第一个模板参数代表的是存储的数据类型,第二个是非类型模板参数,代表的是存储元素的个数:

int main()
{
    array<int, 10> a1;
    array<double, 15> a2;
    return 0;
}

array和普通数组最大的区别在于对于越界访问的检查

int main()
{
    int a[10];
    cout << a[10] << endl;//越界不一定能检查出来
    array<int, 10> b;
    cout << b[10] << endl;//只要越界,一定能检查出来
    return 0;

 总结:

1.array容器的对象是建立在栈区的,不适合定义大数组 array容器的设计可能是为了代替静态数组,因为array容器更安全,能够检查除越界的错误,而静态数组并不一定能够检查出来。

2.array数组有的东西vector都有,个人认为还是vector香

补充

2、forward_list容器 forward_list容器本质就是一个单链表,相比list的区别在于forward_list节省了空间,实际使用上使用forward_list的比率还是比较低的,还是使用list来的方便。

3、unordered_map和unordered_set容器 比较实用,后面专门出一篇博文介绍。

容器中的一些新方法 如果我们再细细去看会发现基本每个容器中都增加了一些C++11的方法,但是其实很多都是用得比较少的。 C++11更新后,容器中增加的新方法最后用的插入接口函数的右值引用版本。

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

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

相关文章

服装品牌必备:智能商品管理系统,打造高效运营新引擎!

在如今瞬息万变的服装市场中&#xff0c;企业的生产链、供应链、销售链及库存管理等各个环节的复杂度与日俱增。随着业务版图的不断扩张&#xff0c;SKU数量呈爆炸式增长&#xff0c;传统的人工管理模式已难以支撑高效运营的需求&#xff0c;信息化、数字化转型已成为行业共识。…

B站狂神说+mybatis增删改查操作

文章目录 1.新增mapper接口2.修改mapper接口同级目录下的xml文件&#xff08;UserMapper.xml&#xff09;3.编写src同级别目录下的test文件4.万能的Map 1.新增mapper接口 package com.aloha.dao;import com.aloha.pojo.User;import java.util.List;public interface UserMappe…

美的品牌店铺运营全解析:洞察用户行为驱动增长

美的品牌店铺运营与用户行为分析 一、店铺运营表现分析&#xff1a; 共获取320个美的店铺的数据及其店铺的商品&#xff0c;共3***0个商品&#xff0c;选取销售额最高的10个店铺美的官方旗舰店、美的空调旗舰店、华凌官方旗舰店、美的冰箱旗舰店、美的日邦企业店、美的集成灶旗…

【笔记】变压器-热损耗-频响曲线推导 - 02 预备知识

0.题外话 周五&#xff0c;在处理一个电路设计时&#xff0c;关联到了日本的TDK公司。目前&#xff0c;市面上大量出货的开关电源用标准型号 - 高频铁氧体变压器 - PQ系列&#xff0c;型号实际是TDK的公司标准。那个尺寸参数是TDK自行制定的。似乎。 我一下意识到为什么日本会…

计算机网络——网络层导论

转发是局部功能——数据平面 路由是全局的功能——控制平面 网卡 网卡&#xff0c;也称为网络适配器&#xff0c;是计算机硬件中的一种设备&#xff0c;主要负责在计算机和网络之间进行数据传输。 一、主要功能 1、数据传输&#xff1a; 发送数据时&#xff0c;网卡将计算机…

人像抠图怎么抠?5款AI抠图工具帮你一键抠人像!

在当今这个视觉盛宴频现的时代&#xff0c;一张背景简洁、人物鲜明的照片往往能瞬间捕获观者的目光。 人像抠图无疑是一项极为关键的技术。它不仅能帮助我们精准地将人物从繁琐的背景中抽离&#xff0c;还为后续的创意编辑与合成铺设了广阔的舞台。今日&#xff0c;将为大家分…

你不知道的C语言知识(第八期:动态内存管理)

本期介绍&#x1f356; 主要介绍&#xff1a;C语言中一些大家熟知知识点中的盲区&#xff0c;这是第八期&#xff0c;主讲动态内存管理。 文章目录 1. 为什么会存在动态内存2. 动态内存管理库函数2.1 malloc函数2.2 calloc函数2.3 realloc函数2.4 free函数 3. 内存泄漏&内存…

vue项目新打开一个tab页或者新窗口的方法

router.resolve&#xff1a;返回一个路由地址的规范化版本。同时包含一个包含任何现有 base 的 href 属性。默认情况下&#xff0c;用于 router.currentRoute 的 currentLocation 应该在特别高阶的用例下才会被覆写。 打开新标签页方法 const openNewTab ()> {// 打开新标…

Linux题目练习

1、配置网络&#xff1a;为网卡添加一个本网段IPV4地址&#xff0c;x.x.x.123 2、配置yum本地仓库&#xff0c;并完成traceroute命令的安装 3、用至少两种方法查看sshd服务的进程号 4、添加一块20G大小的磁盘&#xff0c;将该磁盘分为两个主分区&#xff0c;大小为1G、2G。将剩…

【Linux】动静态库:构建强大软件生态的基石

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; 动静态库基本原理 二&#xff1a;&#x1f525; 认识动静态库 三&#xff1a;&#x1f525; 动静态库的优缺点 &#x1f98b; 静态库&#x1f98b; 动态库…

HRCE第四次实验

1.dns配置介绍 使用S/C架构 server --- bind(程序) --- 服务名称&#xff08;程序主进程&#xff09;named 开始实验前我们先进行主配置文件进行配置 vim /etc/named.conf进入主配置文件&#xff08;共分四部分&#xff09; 1.options{全局配置}&#xff08;多模块生效的配…

微服务设计模式 - 事件溯源模式(Event Sourcing Pattern)

微服务设计模式 - 事件溯源模式&#xff08;Event Sourcing Pattern&#xff09; 定义 事件溯源&#xff08;Event Sourcing&#xff09;是一种将所有状态更改保存为一系列事件的设计模式。每次系统状态发生变化时&#xff0c;都会生成一个事件&#xff0c;这些事件在事件存储…

Sketch下载安装,中文版在线免费用!

Sketch是一款轻便、高效的矢量设计工具&#xff0c;全球众多设计师借助它创造出了无数令人惊叹的作品。Sketch在下载安装方面&#xff0c;其矢量编辑、控件以及样式等功能颇具优势&#xff0c;不过&#xff0c;Sketch中文版即时设计在下载安装方面也毫不逊色。即时设计是一个一…

微服务之间的信息传递---OpenFeign拦截器

上篇我们已经实现了从网关传递信息到微服务。 新的问题是&#xff0c;微服务之间如何传递信息。 前面我们在公共模块中定义拦截器并保存用户信息到了线程变量。 但注意&#xff1a; 线程变量的作用域范围仅限于当前请求的线程。每个请求对应一个独立的线程变量&#xff0c;…

Nginx安装和配置

2.Nginx安装 2.1Nginx概述 2.1.1 Nginx介绍 Nginx&#xff08;engine x&#xff09;&#xff0c;2002 年开发&#xff0c;分为社区版和商业版&#xff08;nginx plus&#xff09; 2019 年3 月 15 日 F5 Networks 6.7 亿美元的价格收购 nginx是免费的、开源的、高性能的 HTTP…

2024全国铁路、高铁、地铁、有轨电车、窄轨铁路、单轨铁路、轻轨等矢量数据下载分享

数据是GIS的血液&#xff01; 我们在《全国地铁路线及站点SHP数据》一文中&#xff0c;分享了我国部分城市的地铁以及站点矢量数据。 现在又为你整理了2024全国铁路、高铁、地铁、有轨电车、窄轨铁路、单轨铁路、轻轨等矢量数据&#xff0c;你可以在文末查看该数据的下载领取…

git上传大文件的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

DAY16|二叉树Part04|LeetCode: 513.找树左下角的值、112. 路径总和、106. 从中序与后序遍历序列构造二叉树

目录 LeetCode: 513.找树左下角的值 基本思路 C代码 LeetCode: 112. 路径总和、113.路径总和II LeetCode: 112. 路径总和 C代码 LeetCode: 113.路径总和II LeetCode: 106. 从中序与后序遍历序列构造二叉树 基本思路 C代码 LeetCode: 513.找树左下角的值 力扣代码链接…

【算力基础】GPU算力计算和其他相关基础(TFLOPS/TOPS/FP32/INT8...)

文章目录 :one: 算力的常见指标:two: 算力计算:three: 常用链接 &#x1f680; 本文主要是聚焦于深度学习领域的 GPU的算力估计&#xff0c;其他类型的硬件设备如CPU可以类比参考。 1️⃣ 算力的常见指标 算力衡量主要与运算速度和精度这两个指标有关。 &#x1f314;速度指…

云集电商:如何通过 OceanBase 实现降本 87.5%|OceanBase案例

云集电商&#xff0c;一家聚焦于社交电商的电商公司&#xff0c;专注于‘精选’理念&#xff0c;致力于为会员提供超高性价比的全品类精选商品&#xff0c;以“批发价”让亿万消费者买到质量可靠的商品。面对近年来外部环境的变化&#xff0c;公司对成本控制提出了更高要求&…