iis7配置thinkphp网站,成都设计公司招聘,给人家做网站服务器自己搭吗,建筑模板公司为什么会想起用lamdba表达式呢#xff1f; 之前有过一些问题#xff0c;比如使用std::sort对某个类或者某个结构体的某些数据进行操作#xff08;比如对某个学生的英语成绩进行排序#xff09;。此时我们会写一个函数并传入形参#xff0c;但是需要的函数有特别简单#…为什么会想起用lamdba表达式呢 之前有过一些问题比如使用std::sort对某个类或者某个结构体的某些数据进行操作比如对某个学生的英语成绩进行排序。此时我们会写一个函数并传入形参但是需要的函数有特别简单最后回头看的时候又还会忘掉。此时lamdba表达式就出现了qaq... 一.什么是lamdba表达式呢 Lambda表达式是一种匿名函数它可以作为参数传递给其他函数或方法。Lambda表达式可以简洁地表示一个函数省去了定义函数的过程。它由三个部分组成参数列表、箭头符号和函数体。Lambda表达式的语法如下 (parameter1, parameter2, ...) - expression 其中参数列表指定了函数的参数箭头符号表示函数体开始的位置函数体是一个表达式用于定义函数的具体逻辑。Lambda表达式可以在需要函数作为参数的地方使用例如在函数式编程、集合操作等场景中。 二.标准的lamdba表达式中每个参数有些是可选参数的一些作用 我们来举例说明吧 #includeiostreamusing namespace std;static string str1this is 全局静态变量;
string str2this is 全局变量;
void funtion1();
int main(){string str3this is 局部变量;static string str4this is 静态局部变量;auto temp[](int a)-bool{//[]中可以有值捕获和引用捕获顾名思义值捕获不可以修改其值//反之引用捕获可以修改并且。没有参数的话默认不捕获变但是可以 //获得全局变量//(template a...) 表示调用lamdba表达式需要传入的参数//-后面是lambda返回值的类型//大括号中是lamdba表达式的执行语句coutstr1endl;coutstr2endl;coutstr4endl;return true;};temp(1);
} 值捕获CLion会直接报错如果要修改值的话会报错不让修改我们只看获得到当前域中的值吧 void funtion1(){int tep;auto temp[](int a)-bool {couttep value istependl;coutstr1endl;coutstr2endl;return false;};temp(2);
} 引用捕获 void funtion1(){int tep;auto temp[](int a)-bool {couttep value istependl;tep999;couttep new value is:tependl;coutstr1endl;coutstr2endl;return false;};temp(2);
} 三.我们来一个小demo吧 lambda表达式让我们在一个变量尽量在比较小的作用域中尽量不要进行值的传递。让代码更简洁可读性更高。 #include iostream
#include vector
#include algorithm
using namespace std;class A
{
public:A(int _a,int _b){a_a;b_b;};int a;int b;
};
int main()
{vectorA test;for(int i0;i10;i){A a(i,10-i);test.emplace_back(a);}sort(test.begin(),test.end(),[](A x,A y){return x.ay.a;});for(int i0;i10;i){couttest[i].aendl;}return 1;