> 文章列表 > C++的Lambda匿名函数

C++的Lambda匿名函数

C++的Lambda匿名函数

Lambda函数的详细介绍

一、背景介绍

Lambda匿名函数,在c++11后被提出来,主要因写法简单,可以把简单函数写成匿名函数,直接使用,而不必单独声明一个函数。缺点是不太容易理解。

二、具体使用

auto func = [capture] (params)  -> ret { func_body; };

其中auto func不是必要,可以直接使用等号后面的函数

capture 常用[=]或[&],前者代表拷贝变量,只读;后者引用变量,可读写
params 入参
ret 返回值
func_body 函数体
//排序算法中使用lambda表达式
sort(vec.begin(),vec.end(),[&](int&a,int&b)->bool{return a<b;
});//槽函数里使用lambda
//直接调用 lambda,信号必须用指针的形式写
connect(act, &QAction::triggered, [=](){if (itemId.isEmpty()) {App::showMessageBoxError(tr("错误"), tr("请先设置单位信息,再设置席位!"));return;}DialogSeats *dialogSeats = new DialogSeats(itemId, this);int result = dialogSeats->exec();if (result == QDialog::Accepted) {refreshTree();}delete dialogSeats;
});