1.标准样式
[](CString itUrl)->bool {
}
例子:
不带参数:
auto fun_helloworld = []()->void{
std::cout << "hello world" << std::endl;
};
fun_helloworld();
带一个参数:
auto fun_helloworld = [](std::string aa)->void{
std::cout << aa << std::endl;
};
fun_helloworld("hello world");
2.[]中几个值介绍
auto findUrlFun = [=](CString itUrl)->bool {
auto itUrlOrigin = GetOriginImageFileUrl(itUrl.GetBuffer());
return itUrlOrigin.CompareNoCase(urlOrigin) == 0 ? true : false;
};
(1)[],什么都不传
for (int i=0; i<10; ++i)
{
auto fun_helloworld = [](std::string aa)->void {
std::cout << aa << std::endl;
};
fun_helloworld("haha");
}
(2)[]中传外部变量,如this
例子:
for (int i=0; i<10; ++i)
{
auto fun_helloworld3 = [i](std::string aa)->void {
std::cout << i << "---" << aa << std::endl;
};
fun_helloworld3("haha");
}
(3)[=],"="是值传递即只能使用外部变量,不能改变值
for (int i=0; i<10; ++i)
{
auto fun_helloworld3 = [=](std::string aa)->void {
std::cout << i << "---" << aa << std::endl;
};
fun_helloworld3("haha");
}
(4)[&],"&"是引用传递,即可以在内部改变外部变量
for (int i=0; i<10; ++i)
{
auto fun_helloworld3 = [&](std::string aa)->void {
std::cout << i << "---" << aa << std::endl;
if (i == 9)
{
i = 0;
}
};
fun_helloworld3("haha");
}
[]中现在经常看到过this,&,=
说明:=意思是值传递,只能使用外部变量,不能改变
&是引用传递,即可以在内部改变外部变量
本文深入探讨了C++中的Lambda表达式,包括其标准样式、如何带参数使用,以及[]中不同值的作用,如外部变量传递、值传递与引用传递的区别。通过具体示例,读者可以了解到Lambda表达式的灵活应用。
2443

被折叠的 条评论
为什么被折叠?



