博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 11学习(1):lambda表达式
阅读量:5077 次
发布时间:2019-06-12

本文共 988 字,大约阅读时间需要 3 分钟。

转载请注明,来自:

 

#include 
#include
#include
using namespace std;vector
> v;// lambda使用function封装function
f1(int k){ return function
([=](int x) -> int { if(x > k) return 1; else if(x == k) return 0; else return -1; });}// 要使用lambda表达式作为参数,需用函数模版template
void f2(Lambda l, int i) { cout<< l(i) <
>::iterator iter = v.begin(); iter != v.end(); ++iter) { cout << (*iter)(9) << endl; cout << (*iter)(10) << endl; cout << (*iter)(11) << endl; } int k = 10; auto lambda = [=](int x) -> int { if(x > k) return 1; else if(x == k) return 0; else return -1; }; k = 6; f2(lambda, 8); return 0;}

 

输出结果:

-1

0
1
-1

 

lambda 引入符:

1. []             //不捕获任何外部变量
2. [=]           //以值的形式捕获所有外部变量
3. [&]          //以引用形式捕获所有外部变量
4. [x, &y]     //x以传值形式捕获,y以引用形式捕获
5. [=, &z]    //z以引用形式捕获,其余变量以传值形式捕获
6. [&, x]      //x以值的形式捕获,其余变量以引用形式捕获

例如上面的代码中,将“auto lambda = [=](int x) -> int”中的“=”改为"&",则k就是引用捕获,运行返回值则为1。

 

转载于:https://www.cnblogs.com/james1207/p/3283361.html

你可能感兴趣的文章
万门大学-人工智能、大数据与复杂系统-01.复杂系统
查看>>
《机器学习基石》---线性回归
查看>>
js实现滑动返回顶部
查看>>
BZOJ 1208 [HNOI2004]宠物收养所:Splay(伸展树)
查看>>
vm setup灰色解决办法
查看>>
机器学习基石笔记14——机器可以怎样学得更好(2)
查看>>
jquery radio,checkbox,select相关【转】
查看>>
Software--Spring Boot--Contact 项目初期
查看>>
什么是位、字节、字、KB、MB?
查看>>
.net 将excel与SQL数据交换
查看>>
hdu 2680(最短路)
查看>>
SpringMVC中的ResponseBody和RequestBody介绍
查看>>
实验四 内存的分配与回收
查看>>
编译Boost
查看>>
深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
查看>>
tar exclude用法
查看>>
spider RPC高级特性
查看>>
hadoop debug script
查看>>
Hadoop could not find or load main class
查看>>
mac lion 系统安装
查看>>