C++11中的Lambda表达式
作者:网络转载 发布时间:[ 2015/3/2 16:12:15 ] 推荐标签:C++ 软件开发 内联函数
Lambda表达式默认的返回类型为void
为了对比,下面使用函数对象实现相同功能的代码:
#include<iostream>
#include<algorithm>
#include<vector>
#include<ostream>
#include<cassert>
using namespace std;
class LambdaFunctor{
public:
void operator()(int n) const{
cout << n << " ";
}
};
int main()
{
vector<int> v;
for (int i = 0; i < 10; i++){
v.push_back(i);
}
for_each(v.begin(), v.end(), LambdaFunctor());
cout << endl;
return 0;
}
对比一下,会发现使用Lambda表达式要简洁得多
上面提到的Lambda表达式可以操作所在作用域的变量,这需要通过被称为“捕获”的特殊语法来实现,是通过在[]内列出将要捕获的“外部”变量列表,这样在函数体内可以访问并操作这些变量。参考下面的代码:
#include<iostream>
#include<algorithm>
#include<vector>
#include<ostream>
#include<cassert>
using namespace std;
int main()
{
vector<int> v;
for (int i = 0; i < 10; i++){
v.push_back(i);
}
//使用for_each语句和Lambda表达式来实现对偶元素的计数
int evenCount = 0;
for_each(v.begin(), v.end(), [&evenCount](int n){
cout << n;
if (n % 2 == 0) {
cout << " is even" << endl;
evenCount++;
}
else {
cout << " is odd" << endl;
}
});
cout << "There are " << evenCount << " even numbers in the vector." << endl;
getchar();
return 0;
}
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南