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

网站建设项目进度表中国建设工程招聘信息网站

网站建设项目进度表,中国建设工程招聘信息网站,实时新闻最新消息,深圳世茂前海中心文章首发公众号#xff1a;iDoitnow 为什么引入Lambda Lambda表达式是一个可以内联在我们代码中的函数#xff0c;我们可以将他传递给另外一个函数。在没有引入Lambda表达式之前#xff0c;当我们遇到需要对多个数据#xff0c;按照同一规则进行操作的时候#xff0c;创建… 文章首发公众号iDoitnow 为什么引入Lambda Lambda表达式是一个可以内联在我们代码中的函数我们可以将他传递给另外一个函数。在没有引入Lambda表达式之前当我们遇到需要对多个数据按照同一规则进行操作的时候创建机动函数会更简单但是必须在其他地方定义好该函数然后再使用它有时候两者之间可能距离离的很远想要了解该函数内部操作的原理需要翻阅多页源代码找它的定义这样使得代码的可读性大打折扣。这就是Lambda表达式出现的主要原因。 基本的Lambda语法 lambda表达式是一个匿名函数。其可以捕获作用域中的变量。其在C11中常用的语法如下 [captures](params){body} [captures]{body} //省略了形参列表函数不接收实参如同形参列表为() [captures](params)-return-type{body} //return-type为返回类型//eg: //捕获列表 参数列表 函数体[ ] (int a, int b) { return a b;} //捕获列表 参数列表 返回类型 函数体[ ] (double x) - double {int y x; return x - y;} /*注Lambda函数没有声明返回类型其返回类型相当于使用decltyp根据返回值推断得到的。如果函数体内不包含返回语句则推断出返回类型为void。但是仅当函数体完全由一条返回语句组成时自动类型推断才管用否则需要使用新增的返回类型后置语法*/【注Lambda表达式自动推断返回值类型有些编译器像GCC即使你有多于一个返回语句也不可以自动推断成功但标准不保证这一点因此为了防止意外的发生当函数体内返回语句不止一条的时候建议使用返回类型后置语法】 其中captures为捕获它一个包含0个或者多个捕获符的用逗号分隔的列表。params为参数列表body为函数体。默认的捕获符只有 采用引用隐式捕获的方式使用自动变量 采用复制隐式捕获的方式使用自动变量 [] // 默认不捕获 [] // 默认以引用捕获意味着在函数体内可以按照引用的方式使用Lambda表达式所在范围内所有可见的局部变量 [, i] // 以引用捕获同上但i以值捕获 [] // 默认以复制捕获意味着在函数体内可以按照值传递的方式使用Lambda表达式所在范围内所有可见的局部变量 [, i] // 以复制捕获同上但 i 以引用捕获下面我们通过C Primer Plus中的一个例子进一步理解Lambda表达式 #include iostream #include vector #include algorithm #include cmath #include ctime const long Size 390000L; int main() {using std::cout;std::vectorint numbers(Size);std::srand(std::time(0));std::generate(numbers.begin(), numbers.end(), std::rand);cout Sample size Size \n;// using lambdasint count3 std::count_if(numbers.begin(), numbers.end(),[](int x){return x % 3 0;});cout Count of numbers divisible by 3: count3 \n;int count13 0;std::for_each(numbers.begin(), numbers.end(),[count13](int x){count13 x % 13 0;});cout Count of numbers divisible by 13: count13 \n;// using a single lambdacount3 count13 0;std::for_each(numbers.begin(), numbers.end(),[](int x){count3 x % 3 0; count13 x % 13 0;});cout Count of numbers divisible by 3: count3 \n;cout Count of numbers divisible by 13: count13 \n;return 0; }程序输出结果 Sample size 390000 Count of numbers divisible by 3: 130274 Count of numbers divisible by 13: 30009 Count of numbers divisible by 3: 130274 Count of numbers divisible by 13: 30009Lambda与STL的结合 当STL中的算法algorithms库遇到Lambda的时候会碰出什么样的火花呢毋庸置疑这极大的提高我们的编程效率更提高了代码的整洁性和可读性例如 vectorint v; v.push_back(1); v.push_back(2); //不使用Lambda表达式 for ( auto itr v.begin(); itr ! v.end(); itr ) {cout *itr; }//使用Lambda表达式 for_each( v.begin(), v.end(), [] (int val){cout val;} );正如上面的例子使用Lambda表达式后代码显的更漂亮而且它的可读性也很强结构更紧凑。 总结 Lambda 引入使我们在某些情况下能够将类似于函数的表达式用作接受函数指针或函数符的函数的参数。它更像胶水代码允许我们将简单的处理逻辑传递到需要的位置提高开发效率使得代码结构简洁而且易于理解。 参考文献 C Primer Plus(第六版) - 第18章 探讨C新标准 C 参考手册
http://www.dnsts.com.cn/news/5204.html

相关文章:

  • 辽宁数据网站建设哪家便宜网站开发移动端
  • 网站建设 文件源代码约定建设一个小说网站要多少钱
  • 在线免费网站建设平台网站开发常用颜色
  • 平面设计电影企业网站搜索优化网络推广
  • 互联网保险的发展搜索引擎技术优化
  • 企业微信网站开发文档自己做h5怎么做
  • jsp租房网站开发优秀商业空间设计案例分析
  • 购物网站开发历史seo网站推广优化费用
  • 蚌埠 网站制作服务专业的网络建站公司
  • 球球cdk怎么做网站本地推荐本地推荐
  • 软件开发和网站开发区别wordpress 异步加速
  • 怎么注册网站名称微网站 免费
  • 前端工程师是做网站吗信誉好的模板网站建设
  • 阿里巴巴企业网站怎么做vs做的网站如何
  • 长沙网站搜索引擎优化网站建设文化流程
  • 网站免费虚拟主机申请jquery图片效果网站
  • 榆林网站优化钟楼区建设局网站
  • 凡科网做网站教程12306的网站是哪个公司做的
  • 一流的基础微网站开发h5高端网站开发
  • 网站建设技术外文文献最新网络推广平台
  • 内江网站制作购物网站模块是什么意思
  • 高密做网站哪家好企业网站内容更新
  • 建网站挣钱 优帮云网站建设 服务内容 费用
  • html企业网站源码长沙装修公司十大排名
  • 如何编辑网站内容如何自己设计一个网站
  • 南宁做网站在哪了wordpress恢复边栏
  • 做网站公司那家好网站建设报价 福州
  • 衡水外贸网站建设充电网站建设方案
  • 自己的电脑做网站空间视屏大企业网站制作及维护
  • 网站制作开发教程seo外链高质量网站