C++基础——lambda表达式

Lambda表达式就是一个匿名函数,允许使用函数功能,但无需为这个函数命名

lambda表达式格式通常为:

[ list ] ( params ) -> ret { func }

( params )中为匿名函数的参数,ret为匿名函数返回类型,{ func }中为函数体,
其中[ list ]表示含义为匿名函数访问的外部(父作用域)变量,举例如下所示:

int main() {
    int tem = 0;
    auto func = ([]()->void 
    {
    cout << tem << endl;
    });
    func();
    return 0;
}

但编译的时候会报错,原因是匿名函数此时无法访问全局变量tem,要想使用该变量,需将其加到[ list ]列表中即可:

int main() {
    int tem = 0;
    auto func = ([tem]()->void 
    {
    cout << tem << endl;
    });
    func();
    return 0;
}

参数获取方式有按值和按引用两种:
[a, &b]表示按值获取a,按引用获取b;
[&, a]表示除了参数a按值获取之外,按引用获取所有父作用域变量;
[=,&b]表示除了参数b按引用获取之外,按值获取其他所有父作用域变量。

利用lambda定义sort()中的比较函数:
#include"iostream"
#include"vector"
#include"algorithm"
using namespace std;
int main() {
    vector<int> vec;
    int i(0);
    while(i<10)
    {
    	vec.push_back(i);
    	i++;
    }
    sort(vec.begin(), vec.end(), [](int &a, int &b)->bool {
         return a < b;
         });
    for (int j = 0; j < vec.size(); ++j)
        cout << vec[j] << endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值