Lambda expressions (since C++11)

Syntax

 
[ captures ] <tparams>(optional)(c++20) ( params ) specifiers(optional) exception attr -> ret { body } (1)  
 
[ captures ] ( params ) -> ret { body } (2)  
 
[ captures ] ( params ) { body } (3)  
 
[ captures ] { body } (4)  
 

上代码:

 // lambdaprj.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include<algorithm>
#include<vector>
#include<iostream>
#include<functional>
using namespace std; /*
* []()->{};
* [ capture list] ( params list) mutable exception attribute -> ret { body }
*/
int main()
{
auto sayHelloWorld = []() {
cout << "hello world" << endl;
};
sayHelloWorld();
auto add_ = [](int a,int b)->int {
return a + b;
};
cout<< add_(, )<<endl; int i = ;//read only
auto add_with_i = [i](int a, int b)->int {
return a + b + i;
};
cout << add_with_i(,)<<endl;
// int j = ;
auto add_with_j_c = [&j](int a, int b)-> int{
j = ;
return a + b + j;
};
cout << add_with_j_c(, ) << " j:" << j << endl;
// vector<int> arr = { ,,,, };
int total = ;
for_each(begin(arr), end(arr),
[&](int x)->int{
return total += x;
});
cout << "total:" << total << endl;
//
vector<int> sort_arr = { ,-,,,,,, };
cout << "unsort : ";
for_each(begin(sort_arr),end(sort_arr),
[](int x) {
cout << x << " "; });
cout << endl;
sort(begin(sort_arr),end(sort_arr),
[](int a, int b)->bool {
return abs(a) < abs(b); });
cout << "sort : ";
for_each(begin(sort_arr), end(sort_arr),
[](int x) {
cout << x << " "; });
cout << endl;
// auto func = [](function<void()> f) {
f();
};
int x = ;
auto func_add = [&]() {
x++;
};
func(func_add);
cout << "x:" << x << endl;
getchar();
return ;
}

参考学习:

1、https://www.youtube.com/watch?v=uk0Ytomv0wY

2、http://en.cppreference.com/w/cpp/language/lambda

lambda modern C++的更多相关文章

  1. Functional Programming without Lambda - Part 1 Functional Composition

    Functions in Java Prior to the introduction of Lambda Expressions feature in version 8, Java had lon ...

  2. [C++11] Effective Modern C++ 读书笔记

    本文记录了我读Effective Modern C++时自己的一些理解和心得. item1:模板类型推导 1)reference属性不能通过传值参数传入模板函数.这就意味着如果模板函数需要一个refe ...

  3. Effective Modern C++翻译(1):序言

    /*********************************************************** 关于书: 书是我从网上找到的effective Modern C++的样章,内 ...

  4. 《Effective Modern C++》翻译--简单介绍

    北京时间2016年1月9日10:31:06.正式開始翻译.水平有限,各位看官若有觉得不妥之处,请批评指正. 之前已经有人翻译了前几个条目,有些借鉴出处:http://www.cnblogs.com/m ...

  5. (转)基于 WPF + Modern UI 的 公司OA小助手 开发总结

    原文地址:http://www.cnblogs.com/rainlam163/p/3365181.html 前言: 距离上一篇博客,整整一个月的时间了.人不能懒下来,必须有个阶段性的总结,算是对我这个 ...

  6. 决定干点事儿--翻译一下《effective modern c++》

    写了非常多关于C++11的博客.总是认为不踏实,非常多东西都是东拼西凑.市场上也非常少有C++11的优秀书籍,但幸运的是Meyers老爷子并没有闲赋.为我们带来了<effective moder ...

  7. 基于 WPF + Modern UI 的 公司OA小助手 开发总结

    前言: 距离上一篇博客,整整一个月的时间了.人不能懒下来,必须有个阶段性的总结,算是对我这个阶段的一个反思.人只有在总结的过程中才会发现自己的不足. 公司每天都要在OA系统上上班点击签到,下班点击签退 ...

  8. C++ lambda的演化

    翻译自https://www.bfilipek.com/2019/02/lambdas-story-part1.html与https://www.bfilipek.com/2019/02/lambda ...

  9. Effective Modern C++:01类型推导

    C++的官方钦定版本,都是以ISO标准被接受的年份命名,分别是C++98,C++03,C++11,C++14,C++17,C++20等.C++11及其后续版本统称为Modern C++. C++11之 ...

随机推荐

  1. VS2015安装失败

    [16D4:18C8][2017-06-24T13:44:01]e000: Error 0x80091007: Hash mismatch for path: D:\Visual Studio 201 ...

  2. MSF漏洞攻击练习系统 – Metasploitable2

    Metasploitable2 是Metasploit团队维护的一个集成了各种漏洞弱点的Linux主机(ubuntu)镜像,方便广大黑扩跟安全人员进行MSF漏洞测试跟学习,免去搭建各种测试环境.VMw ...

  3. solr特点三: boost(改变默认打分排序)

    有时候默认的字段打分不能满足我们的需要,如我们想把关键词出现在标题中的优先显示. 测试于:Solr 4.5.1, Jdk 1.6.0_45, Tomcat 6.0.37 | CentOS 5.7 实现 ...

  4. datetime.date(2014, 4, 25) is not JSON serializable

    # 背景 接口期望返回json格式数据,但数据存储在mysql中,先将mysql的数据转为dict,然后将dict转为json格式,然后就报这个错误了的,原因就是时间格式转换问题 # 解决方法 1. ...

  5. jenkins pipeline中执行nohup java -jar ***.jar & 的时候会忽略执行jar之后的命令

    搜索关键词:pipeline中执行nohup时忽略执行& 问题: 在做自动化部署的时候,脚本如下: sh "ssh root@'$target_ip' nohup '$java_ho ...

  6. (转)可以一同使用 DISTINCT 和 COUNT 关键词,来计算非重复结果的数目。

    点击收看

  7. 学习css(一)

    font:12px/22px "\5B8B\4F53",Arial, Helvetica, sans-serif font:12px/22px 指 字体大小/字体行高 " ...

  8. 解决ImageCropperComponent发布报错

    ng serve可以正常运行,npm run build 就会报错: ERROR in : Type ImageCropperComponent in -/node_modules/ng2-img-c ...

  9. A - 畅通工程 (并查集)

    点击打开链接 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连 ...

  10. 位集合(BitSet)| Java数据结构

    Java Bitset类 BitSet使用示例: import java.util.BitSet; public class BitSetDemo { public static void main( ...