C++11的新特性 Lambda 函数

来源:互联网 发布:a卡 mac dsdt hdmi 编辑:程序博客网 时间:2024/03/29 20:04

lambda函数的特点

简洁: 比起函数来说,要少写不少代码。

额外的功能: lambda可以访问作用域内的任何动态变量,要扑捉要使用的变量,把它的名称放在[ ] 就可以了。[z] 表示按值访问, [&z] 表示按引用访问 [=] 表示访问了所有的动态变量, [&]表示引用访问了所有的动态变量。


语法: [ 引用的变量](类型 变量){ }      返回的类型为自动推导出的结果。


判断是否能被3整除

bool f3(int x){ return x%3 == 0}

判断是否能被13整除

bool f13(int x){ return x%13 == 0}


如果用lambda函数


[](int x){ return x%3 == 0 }

[](int x){ return x%7 == 0 }


如果判断一些列的数当中有多少个可以分别被3和7整除,

int count3=0;

count3= std:count_if(numbers.begin(), numbers.end(), [](int x){ return x%3 == 0 } );

int count13=0;

count13= std:count_if(numbers.begin(), numbers.end(), [](int x){ return x%13 == 0 } );


采用以下方式,用一条语句就可以实现

int count3=0

int count13=0;

std:count_if(numbers.begin(), numbers.end(), [&](int x){ count3 += x%3 == 0;  count13 += x%13 == 0; );        //引用count3 和 count13.



0 0
原创粉丝点击