如何在lambda表达式中使用引用形式捕捉局部变量

技术如何在lambda表达式中使用引用形式捕捉局部变量本篇文章为大家展示了如何在lambda表达式中使用引用形式捕捉局部变量,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获F.52

本文向您展示了如何在lambda表达式中通过引用来捕获局部变量。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。

F.52 在lambda表达式中使用引用形式捕捉局部变量,包含向算法传递变量的情况。

注意:如果你不知道什么是捕获。

https://mp.weixin.qq.com/s/VuW_5OcX7uUUrMbsN2wxPQ

Reason(原因)

为了效率和正确性,当在本地使用lambda表达式时,几乎总是需要通过引用来捕获变量。这包括编写或调用本地并发算法,因为它们需要在返回之前满足。

00-1010

效率考虑:对于大多数类型,传输引用的成本低于传输值的成本。

关于正确性的考虑:很多调用都希望在调用端对原对象产生联合作用(参考下面的例子)(在执行被调用函数的同时)。价值无法做到这一点。

Discussion(讨论)

不幸的是,对于本地调用,没有简单的方法可以通过引用来捕获常量类型变量,以实现效率并避免级联效应。

注意:常量类型的应用应该引用函数声明中声明为常量的引用参数,这样既能提供高效率,又能提供写保护。

Note(注意)

这里,一个大对象(一个网络消息)被传递给一个迭代算法,复制该消息是无效的或不正确的(可能无法复制):

std:for_each(begin(套接字),end(套接字),[message](auto socket){ socket . send(消息);});

注:每个周期的复制成本也很高。

Example(示例)

这是一个简单的三阶段并发管道。每个状态对象封装一个工作线程和一个队列,一个进程函数处理入队,它的析构函数自动进入阻塞状态,等待队列变空后再关闭线程。

void send _ packets(buffersbufs){ stage encryptor([](buffer b){ encrypt(b));});stage compressor([](buffer b){ compress(b);encrypter . process(b);});stage decorator([](buffer b){ decorate(b));压缩机.工艺(b);});for(autob : bufs){ decorator . process(b);} }//自动blockswaitingforpipeline to finish

注意:代码中使用了隐式捕获。详情请参考https://mp.weixin.qq.com/s/RNpLqwekN3BJUbIN-DwVxQ.

00-1010标记了lambda表达式通过引用捕获变量的情况,但是它并没有在函数范围内本地使用,也没有通过引用传递给另一个函数。

注意:这是一个近似规则,但是可以标记为:传递一个很可能被调用方保存的指针,在通过参数访问的堆上的某个地方写入,返回lambda表达式,等等。生命周期条件组还提供了标记转义指针和引用的一般条件,并且还包括从lambda表达式派生的情况。

上面的内容是如何在lambda表达式中通过引用来捕获局部变量。你学到什么知识或技能了吗?如果你想学习更多的技能或丰富你的知识,请关注行业信息渠道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/79845.html

(0)

相关推荐

  • 抖音粉丝在哪里买,抖音活粉多少钱一个?

    技术抖音粉丝在哪里买,抖音活粉多少钱一个?抖音快速增长粉料的方法抖音无疑是目前新媒体中增长粉料最简单、增长最快的平台。从前,成都小甜甜一夜涨粉五百万,后来,灵魂当铺一天涨粉七十五万。这样的涨粉速度在其他平台是难以想象的。

    测评 2021年10月20日
  • oracle常用hint是怎样的

    技术oracle常用hint是怎样的oracle常用hint是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

    攻略 2021年11月12日
  • 抖音刷双击在线秒刷,怎么在平台刷抖音赞呢

    技术抖音刷双击在线秒刷,怎么在平台刷抖音赞呢增加抖音点赞量,我们最快速的方法就是去抖音刷赞双击网站,在该网站上可以刷抖音作品点赞量双击量,从而快速的增加抖音作品点赞。那有些抖音用户就纳闷了,花钱买抖音赞,抖音点赞多有什么

    测评 2021年10月21日
  • 朴实,有人说农民勤劳朴实,是真的吗

    技术朴实,有人说农民勤劳朴实,是真的吗乡村农民,种田耕作,养家糊口,获得收入,非常勤劳。长时间勤劳幸苦,养成朴实性格,令农村有一种纯天然的美和令人留恋的道德。这是每一位中国人都能深深体会到和骄傲的。农民的勤劳朴实,令农村

    生活 2021年10月22日
  • 多用户注册登录函数封装版

    技术多用户注册登录函数封装版 多用户注册登录函数封装版要求:
    1.基于文件实现用户注册及登录功能
    2.多用户模式,注册登录功能可循环执行
    3.将功能封装成函数def login():"""用于用户登录的

    礼包 2021年11月15日
  • 容斥问题公式,四个集合的容斥原理公式怎么解决

    技术容斥问题公式,四个集合的容斥原理公式怎么解决用|A|表示集合A的基数,也即集合A中元素的个数。则有|A∪B∪C∪D|=|A|+|B|+|C|+|D|-|A∩B|-|A∩C|-|A∩D|-|B∩C|-|B∩D|-|C∩

    生活 2021年10月26日