C++ | C11 特性之匿名函数
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; }
);
}