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;
});