lambda表达式
1.1 传入参数直接定义lambda表达式
#include <iostream>
using namespace std;
int main()
{
int y=10;
auto x = [y](int val)
{
return val>y;
};
cout<<x(5)<<endl;
}
1.2 输出结果
0
2.1 使用this指针定义
#include <iostream>
#include <unordered_set>
using namespace std;
struct Str
{
auto fun()
{
int val = 3;
auto lam = [val, this] ()
{
return val>x;
};
return lam();
}
int x;
};
int main()
{
Str s;
s.x=1;
cout<<s.fun()<<endl;;
}
2.2 输出结果
1
3.1 使用模板参数(需要c++20)
#include <iostream>
using namespace std;
int main()
{
auto x = []<typename T>(T val)
{
return ++val;
};
cout<<x('a')<<endl;
}
3.2 输出结果
b
4.1 直接调用函数
#include <iostream>
using namespace std;
int main()
{
int x = 3;
int y = 5;
const auto val = [z=x+y]()
{
return z;
}();
cout<<val<<endl;
}
4.2 输出结果
8
5.1使用auto关键字
#include <iostream>
#include <functional>
#include <map>
using namespace std;
int main()
{
map<int, int> m{{2,3}};
auto lam = [](const auto &p)
{
return p.first+p.second;
};
cout<<lam(*m.begin())<<endl;
}
5.2 输出结果
5