如何在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)

相关推荐

  • Elasticsearch查询速度这么快的原因是什么

    技术Elasticsearch查询速度这么快的原因是什么这篇文章主要介绍“Elasticsearch查询速度这么快的原因是什么”,在日常操作中,相信很多人在Elasticsearch查询速度这么快的原因是什么问题上存在疑

    攻略 2021年10月26日
  • 电子烟和真烟哪个危害大,电子烟和真烟哪个危害大

    技术电子烟和真烟哪个危害大,电子烟和真烟哪个危害大香烟与电子烟本质上不属于同一类型产品电子烟和真烟哪个危害大,香烟,依靠燃烧烟草产生烟雾人吸入肺部通过血液,粘膜吸收,香烟有害身体健康众所周知,香烟里含有焦油,一氧化碳,汞

    生活 2021年10月25日
  • Django模块怎么部署

    技术Django模块怎么部署这篇文章主要为大家展示了“Django模块怎么部署”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Django模块怎么部署”这篇文章吧。在Djang

    攻略 2021年11月24日
  • 布局标签,结构化语义标签)

    技术布局标签,结构化语义标签) 布局标签(结构化语义标签)注意,关注的是语义,而不是样式的区别,下面的这些标签所展示出来的样式都是一样的,都是H5新增的一些标签,当我们遇到这些标签的时候就能够通过语义知

    礼包 2021年12月10日
  • LeetCode如何打印从1到N位数的最大值?

    技术LeetCode怎么打印从1到最大的n位数这篇文章主要介绍LeetCode怎么打印从1到最大的n位数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!题目:输入数字n,按顺序从1打印到最大的n位十

    攻略 2021年12月15日
  • 京东自动抢茅台脚本 Python

    技术京东自动抢茅台脚本 Python 京东自动抢茅台脚本 Python这期为大家继续分享个GitHub上面的大神开源的项目,大家可以认真看看,然后把对自己刚兴趣的收藏下来!正文开始
    开始本文前,先问大家

    礼包 2021年11月5日