C++ lambda初探

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

标签: none

添加新评论