lambda
表达式主要用于一次性的函数,最常见的应用就是在remove_if
,find_if
这种需要predicator的函数中了。
其结构为
[函数对象参数] (函数参数) mutable或exception声明 -> 返回值类型 {函数体}
其中[]
标志Lambda的开始,[]
中可以增加一些参数。
[=]
表示以拷贝的方式传递此lambda所在作用域的全部变量[&]
引用传递[=,&value]
其他变量全用值传递,value变量用引用传递[this]
可以传递this指针,可以在函数体中调用this->something
可以用->标明函数返回值变量,用法同C11标准相同,简单函数可以省略,lambda可以自动推断。 伪代码
std::list<int> lst = {1,2,3,4,5,6};
int value = 4;
lst.remove_if([&value](const int& elem){return elem==value;});
lst.remove_if([](const int& elem){return elem>=5;});
for(auto i: lst)
std::cout<<i<<std::endl;
output
1
2
3