C++ | C11 特性之匿名函数

Author Avatar
akimoto-cris 12月 22, 2018

c++ 中的匿名函数

网上有大把博客 cover 到了匿名函数,所以这里概括一下,C++ 中匿名函数的通用形式:

auto func = [captures] (params) {Statments;} 
  • captures: 变量选取规则
  • params 和 Statments: 和普通函数相同, 不需要返回参数

变量选取 [captures]:

为了使函数能够使用函数 block 作用域之外的变量,需要设定函数 变量选取的规则:

options:

  • [] 无视所有外部 block 变量
  • [&] 引用所有外部 block 变量
  • [=] 拷贝所有外部 block 变量
  • [=, &foo] 拷贝所有外部 block 变量,但只对 foo 引用
  • [bar] 只拷贝外部 bar 变量
  • [this] 选取当前类中的 this 指针

比如:

{
    string name;  
    cin>> name;  
    return global_address_book.findMatchingAddresses(   
        // notice that the lambda function uses the the variable 'name'  
        [&] (const string& addr) { return name.find( addr ) != string::npos; }   
    ); 
}

参考

https://www.cnblogs.com/lidabo/p/3908663.html