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

做网站公司如何选做网站所用的技术

做网站公司如何选,做网站所用的技术,搜索点击软件,建设工程信息网官网入口Lambda 介绍 Lambda 函数也叫匿名函数, 是C 11中新增的特性; 1. Lambda函数的好处 如果你的代码里面存在大量的小函数,而这些函数一般只被调用一次,那么将他们重构成 lambda 表达式。 Lambda函数使代码变得更加紧凑、更加结构化和更富有表现…

 Lambda 介绍

   Lambda 函数也叫匿名函数, 是C++ 11中新增的特性;

1. Lambda函数的好处

 如果你的代码里面存在大量的小函数,而这些函数一般只被调用一次,那么将他们重构成 lambda 表达式。

Lambda函数使代码变得更加紧凑、更加结构化和更富有表现力;

lambda在c++作用主要是作为内嵌函数,逻辑更加清楚,代码可读性更好;

例:

void main()
{thread t1([]() { printf("hello..."); });t1.join();}

2. C++11 的 lambda 表达式规范如下:

此图显示了 lambda 的组成部分:

  1. capture 子句(在 C++ 规范中也称为 Lambda 引导。)

  2. 参数列表(可选)。 (也称为 Lambda 声明符)

  3. mutable 规范(可选)。

  4. exception-specification(可选)。

  5. trailing-return-type(可选)。

  6. Lambda 体。

具体见:

C++ 中的 Lambda 表达式 | Microsoft Learn

Lambda 表达式的定义形式如下:

[外部变量访问方式说明符] (参数表) -> 返回值类型
{语句块
}

 example

[=] (int x, int y) -> bool {return x%10 < y%10; }

Lambda捕获列表

Lambda表达式与普通函数最大的区别是,除了可以使用参数以外,Lambda函数还可以通过捕获列表访问一些上下文中的数据;

语法上,在“[]”包括起来的是捕获列表

捕获列表由多个捕获项组成,并以逗号分隔。捕获列表有以下几种形式:

[]表示不捕获任何变量

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

int num = 100;
auto function = ([num]{std::cout << num << std::endl;}
);

 [&var]表示引用传递捕捉变量var  (可修改值)

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

[=, &a, &b]表示以引用传递的方式捕捉变量ab,以值传递方式捕捉其它所有变量

[&, a, this]表示以值传递的方式捕捉变量athis,引用传递方式捕捉其它所有变量。

不过值得注意的是,捕捉列表不允许变量重复传递。下面一些例子就是典型的重复,会导致编译时期的错误。例如:

    [=,a]这里已经以值传递方式捕捉了所有变量,但是重复捕捉a了,会报错的;[&,&this]这里&已经以引用传递方式捕捉了所有变量,再捕捉this也是一种重复。

Lambda参数列表

Lambda还可以接受输入参数。参数列表是可选的, 类似于函数的参数列表

auto function = [] (int a, int b){return a+ b;
};function(100, 200);

可变规格mutable

默认情况下Lambda函数总是一个const函数,mutable可以取消其常量性。在使用该修饰符时,参数列表不可省略(即使参数为空)。

#include <iostream>
using namespace std;int main()
{int m = 5;[&] (int a) mutable { m += a; }(6);   // a=6;cout << m     << endl;
}

输出 11;

返回类型

Lambda表达式的返回类型会自动推导。除非你指定了返回类型,否则不必使用关键字

auto x1 = [](int i){ return i; };

Lambda表达式的缺点

  • Lamdba表达式语法比较灵活,增加了阅读代码的难度
  • 对于函数复用无能为力

Lamdba 表达式应用于STL算法库 

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{int a[4] = { 1, 2, 3, 4 };int total = 0;for_each(a, a + 4, [&](int & x) { total += x; cout << total << endl; });cout << total << endl;  //输出 10return 0;
}

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

相关文章:

  • 网站开发人才html5的网站有哪些
  • phpcms律师网站源码兴县做网站的公司
  • 建站之星视频自己做一个网站
  • 杭州设计公司logo苏州seo推广公司
  • 深圳市建设培训中心网站邢台seo排名
  • 网站建设风险的特征sem百度竞价推广
  • 有机玻璃东莞网站建设技术支持微软网站开发工具
  • 应该双网站做电路设计的兼职网站
  • 做静态网站的步骤欧米伽官方网站手表价格
  • 嘉兴制作网站做网站容易吧
  • 国外 网站 欣赏重庆网上房地产官网查询备案价
  • wordpress网站被黑如何设计好的网页
  • 网站制作用什么语言网站建设需要的图片怎么弄
  • 9色3ce眼影常州seo外包
  • 网站建设的目的意义怎么搜 织梦的网站
  • 网站开发的未来发展趋势广告设计创意
  • 哪个网站可以做兼职网站基本建设是什么
  • 临安区做网站的公司企业建设网站的必要性
  • 手机网站怎么制作软件亚马逊品牌网站建设
  • 宾馆网站模板企业产品推广平台
  • 丽江网站建设 莱芜wordpress中的分类页
  • 广东专业做网站排名公司哪家好seo顾问服务 品达优化
  • 网站互联网接入商火炬开发区网站建设
  • 学校网站管理与建设办法seo快速收录快速排名
  • 丰都网站建设报价梅河口网站开发
  • 网站改版 影响谷歌sem推广
  • 织梦网站备份建设网站账号密码不区分大小写
  • thinkphp5做的网站宣传册设计与制作模板
  • 做影视网站代理犯法吗长沙手机网站建设哪些内容
  • 建设公司网站价格wordpress浏览最多的文章