当前位置: 首页 > news >正文

南昌市建设监督网站站长wordpress什么环境速度

南昌市建设监督网站站长,wordpress什么环境速度,网站开发制作流程,企查查官网查询lambda lambda的介绍lambda的使用lambda的细节->捕捉列表 lambda的介绍 lambda是匿名函数,再适合的场景去使用可以提高代码的可读性。 场景: 假设有一个Goods类需要进行按照价格、数量排序 class Goods {string name;size_t _price;//价格int num;/…

lambda

    • lambda的介绍
    • lambda的使用
    • lambda的细节->捕捉列表

lambda的介绍

lambda是匿名函数,再适合的场景去使用可以提高代码的可读性。
场景:
假设有一个Goods类需要进行按照价格、数量排序

class Goods
{string name;size_t _price;//价格int num;//数量
};

要是对一个类进行排序可以使用库函数sort(),但是sort()的最后一个参数是决定按照哪个成员排序,以及是排升序还是排降序的,所以最后一个参数就需要写成仿函数,假设用价格排升序:

struct ComparePriceGreater
{bool operator()(Goods& g1,Goods& g2){return g1.price>g2.prices;}
};
//然后再传仿函数
sort(容器.begin(),容器.end(),ComparePriceGreater())

这样排列组合就需要写四个仿函数那这样就会减低代码的可读性,如果使用lambda就可以减少代码量,加强代码的可读性。

sort(容器.begin(),容器.end(),[](const Goods& g1, const Goods& g2)
{return g1.price>g2.price };)

lambda的使用

lambdad的组成部分:capture-listmutable->return-type{statement}
[capture-list]:叫做补做列表,该列表总是出现在lambda函数的开始位置,编译器根据[]来判断接下来的代码是否为lambda函数,捕捉列表能够捕捉上下文中的变量供lambda函数使用。
(parameters):叫做参数列表,和函数的参数列表是一样的,没有参数的时候可以省略
mutable:默认情况下,lambda函数总是一个const函数,mutable可以取消其常量性。使用该修饰符时,参数列表不可省略(即使参数为空)。
->return-type:返回值类型。用追踪返回类型形式声明函数的返回值类型,没有返回值时此部分可以省略。返回值类型明确情况下,也可省略,由编译器对返回类型进行推导。
{statement}:函数主体,在该函数体内,除了可以使用其参数外,还可以使用所有捕获到的变量。

int main()
{auto add = [](int a)mutable->int {return ++a; };cout << add(1) << endl;return 0;
}

需要注意:函数体写完之后要加上;

lambda的细节->捕捉列表

[]捕捉列表可以捕捉程序上下文中的变量给函数体使用,是值传递还是应用传递。
[var]:值传递捕捉var
[=]:值传递捕捉此作用域中的所有变量
[&var]:引用传递捕捉var
[&]:引用传递捕捉此作用域中的全部变量
[this]:值传递捕捉this指针
注意点:

  • 捕捉传递可以是多个捕捉项,如:[=,&a,&b]
  • 不能重复传递捕捉同一个变量,如:[=,a]
  • lambda是一个匿名函数,要用auto来接收,或者function和bind包装器
  • lambda若是全局的,捕捉列表一定要为空
  • 两个相同的lambda不可以赋值
  • lambda只可以捕捉本作用域的局部变量,捕捉全局和非此作用域的变量会报错

例子: 写一个交换两个数的lambda

int main()
{int a = 1;int b = 2;auto Swap = [=]() mutable{int tmp = a;a = b;b = tmp;};Swap();cout << a << " " << b << endl;return 0;
}

在这里插入图片描述

这里是=捕捉属于值传递给函数体,说明实际是交换不了a和b的,mutable,是为了解除捕捉过来的a,b的const属性。

int a = 1;
int b = 2;
auto Swap = [&]() mutable{int tmp = a;a = b;b = tmp;};
Swap();
cout << a << " " << b << endl;
return 0;

在这里插入图片描述
这里是&捕捉给函数体使用是引用传递,可以交换a,b的值,这里可以不加mutable,因为引用类似于指针,初始是不带const属性的。

http://www.yayakq.cn/news/48699/

相关文章:

  • 企业网站建设账务处理wordpress 熊掌号api
  • 浏览学校网站的做介绍民法典建设工程合同篇
  • 单页网站建个短视频网站
  • 郑州网站建设蝶动科技qq做我女朋友好吗网站
  • 网站数据流分析怎么做盘多多百度网盘搜索引擎
  • 做网站用啥框架wordpress防止爆破
  • 湖南省新邵县建设局网站网站的制作哪家好
  • 无锡网站建设 首选众诺网站开发相关书籍资料
  • 茅台酒网站建设方案郑州电商公司排名前十有哪些
  • 做兼职在什么网站上找网站建设公司怎么拉单
  • 介绍家乡的网站设计策划书网站建设时间影响因素
  • 中文网站建设中模板凯里市经济开发区建设局网站
  • 百度站长工具app中海园林建设有限公司网站
  • 南阳网站建设与管理企业网站建设怎么策划
  • 陕西网站开发企业wordpress无法安装主题
  • 保定网站建设优化做国外网站什么好
  • 珠宝类企业网站(手机端)免费的网页设计代码模板
  • 常见的网站空间服务商青海公司网站建设
  • 适合医药公司做网站的图片网站建设的潜在客户
  • 有个网站做字的图片兰州 网站建设公司
  • 网站建设与安全wordpress 静态化
  • 重庆做商城网站建设好用的ppt模板网站
  • 网站建设的必要性分析商务网站建设简答题及答案
  • 服务专业的网站开发设计软件开发工程师招聘简章
  • 个人做网站时不要做什么样的网站wordpress 插件被墙
  • 江阴做网站公司全网最大的精品网站
  • 贸易网站开发静态网站制作价格
  • 企业网站有哪些优点高端大气的广告公司名字
  • 诸暨市建设局网站西安网站建设推荐q479185700上墙
  • 网站建设文翻译工作二级域名网站免费申请