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. java 文件中 定义一个字符串,它的默认编码是什么?

    .java 文件的编码就是 String 字符串的编码 File 文件的编码就是 文件内容的编码 request 的设置的编码就是inputstream 的编码 jvm 的默认编码(the defau ...

  2. view添加虚线边框

      CAShapeLayer *border = [CAShapeLayer layer];                 border.strokeColor = SLColorLine.CGCo ...

  3. Codeforces758C Unfair Poll 2017-01-20 10:24 95人阅读 评论(0) 收藏

    C. Unfair Poll time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  4. C#计算两个日期之间相差的天数

    说明:如:1900-01-01与1900-01-01之间算一天 private static int DateDiff(DateTime dateStart, DateTime dateEnd) { ...

  5. 【转】【java源码分析】Map中的hash算法分析

    全网把Map中的hash()分析的最透彻的文章,别无二家. 2018年05月09日 09:08:08 阅读数:957 你知道HashMap中hash方法的具体实现吗?你知道HashTable.Conc ...

  6. 开源应用框架BitAdminCore重构再思考

    索引 NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:https://www.bitadmincore.com 框架源码:https://github.com/chenyi ...

  7. 如何创建一个自己的.NET Core Global Tools

    索引 NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:https://www.bitadmincore.com 框架源码:https://github.com/chenyi ...

  8. 创建可复用的自定义 ASP.NET MVC Helpers

    通常,在ASP.NET MVC项目中App_Code目录下新建.cshtml编写类似下方的代码就能创建自定义的MVC Helper了, 假设文件名为StrHelper.cshtml,那么在别的视图中的 ...

  9. 【ocp-12c】最新Oracle OCP-071考试题库(39题)

    39.choose the best answer View the Exhibit and examine the description of the EMPLOYEES table. You w ...

  10. CTF中密码学一些基础

    本文作者:i春秋签约作家MAX. 凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密. 给大家先找两道题,来一起探讨基础密码学 ...