基本结构
[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}
引入符 | 说明 |
---|---|
[] | 不捕获任何外部变量 |
[=] | 以传值的方式捕获所有外部变量 |
[&] | 以传引用的方式捕获所有外部变量 |
[x,&y] | x 以传值的方式捕获,其余外部变量传引用的方式捕获 |
[=,&x] | x以传引用的方式捕获,其余外部变量以传值的方式捕获 |
[&,x] | 以传值的方式捕获,其余外部变量传引用的方式捕获 |
#include <iostream>
#include<algorithm>
#include<cstdlib>
using namespace std;
int main()
{
size_t v1 = 15;
auto f1 = [v1]{return v1;};
auto f2 = [&v1]{return v1;};
cout << "f1 = " << f1()<<endl;
cout << "f2 = " << f2()<<endl;
v1 = 51;
cout<<"---------------"<<endl;
cout << "f1 = " << f1()<<endl;
cout << "f2 = " << f2()<<endl;
cout<<"---------------"<<endl;
int a[4] = {11, 2, 33, 4};
sort(a, a+4, [=](int x, int y) -> bool { return x < y; } );
for_each(a, a+4, [=](int x) { cout << x << " ";} );
cout<<endl;
return 0;
}
运行结果: