c11特性------------------lambdas的使用
2015-03-11 12:49
239 查看
lambdas的语法
无参数的lambsad表达式
auto l = []{
std::cout << "hello " << std::endl;
};
l();
以上就完成了无参数的lambdas的使用
有参数的lambdas的使用
两种语法:
[...] {...}
或者
[...] (...)
#include<iostream>
#include<string>
带有参数的lambdas函数
int _tmain(int argc, _TCHAR* argv[])
{
auto l = [](const std::string &s){
std::cout << s << std::endl;
};
l("aaaaa");
getchar();
return 0;
}
带有返回值的lambdas函数
#include<iostream>
#include<string>
int _tmain(int argc, _TCHAR* argv[])
{
auto l = [](const std::string &s)->std::string{
return s;
};
std::cout<<l("aaaaa")<<std::endl;
getchar();
return 0;
}
访问外部范围的lambdas
使用lambdas作为函数的返回值
首先要使用到的函数头文件
#include<functional>
std::function<int(int, int)> retrunlambdas(){
return[](int x, int y){
return x*y;
};
}
auto lf = retrunlambdas();
std::cout <<"the final lf(int , int) = "<< lf(6, 7) << std::endl;
输出结果为:
the final lf(int , int) = 42
无参数的lambsad表达式
auto l = []{
std::cout << "hello " << std::endl;
};
l();
以上就完成了无参数的lambdas的使用
有参数的lambdas的使用
两种语法:
[...] {...}
或者
[...] (...)
#include<iostream>
#include<string>
带有参数的lambdas函数
int _tmain(int argc, _TCHAR* argv[])
{
auto l = [](const std::string &s){
std::cout << s << std::endl;
};
l("aaaaa");
getchar();
return 0;
}
带有返回值的lambdas函数
#include<iostream>
#include<string>
int _tmain(int argc, _TCHAR* argv[])
{
auto l = [](const std::string &s)->std::string{
return s;
};
std::cout<<l("aaaaa")<<std::endl;
getchar();
return 0;
}
访问外部范围的lambdas
int _tmain(int argc, _TCHAR* argv[]) { int x = 0; int y = 42; auto l = [x , &y](){ std::cout << "x : " << x << std::endl; std::cout << "y : " << y << std::endl; y++; }; x = y = 77; l(); l(); std::cout << "final y : " << y << std::endl; getchar(); return 0; } 输出结果为 x : 0 y : 77 x : 0 y : 78 final y : 79
使用lambdas作为函数的返回值
首先要使用到的函数头文件
#include<functional>
std::function<int(int, int)> retrunlambdas(){
return[](int x, int y){
return x*y;
};
}
auto lf = retrunlambdas();
std::cout <<"the final lf(int , int) = "<< lf(6, 7) << std::endl;
输出结果为:
the final lf(int , int) = 42
相关文章推荐
- JDK 1.5 特性使用实例7--运行外部程序
- JDK 1.5 特性使用实例1--Generics
- CodeProject - 使用特性(attributes)和激活机制来实现工厂模式
- 使用Java5特性来简化反射编程
- [导入]VS 2005中使用C#的新特性:可空类型
- VS2005中使用C#的新特性:可空类型
- 收藏——CodeProject - 使用特性(attributes)和激活机制来实现工厂模式
- 使用C#的Partial特性进行功能扩展
- 使用ASP.net 2.0 的一些新特性
- JDK 1.5 特性使用实例2--Varargs
- J2SE5.0新特性之使用代理服务器
- 任何人都可以重构---使用 Eclipse 自动重构特性的方法与原因 选择自 shanyou 的 Blog
- 学习笔记,VB.NET使用DirectSound9 (2) 声音的特性
- J2SE5.0新特性之使用代理服务器
- JDK 1.5 特性使用实例3--AutoBoxing
- JDK 1.5 特性使用实例5--metadata
- 使用 .NET 对事件进行编程以及VS.NET 2003 有那些新特性
- 与MYSQL 搏斗。介绍MYSQL的一些特性和使用工具。
- [导入]VS 2005中使用C#的新特性:可空类型
- [导入]VS 2005中使用C#的新特性:可空类型