c++(第五版)

定制操作

  1. 介绍lambda

将其理解为未命名的内联函数。与函数不同在于可能定义在函数内部。
形式:【capture list】(parameter list) -> return type { function body }
其中:capture list是lambda所在函数中定义的局部变量的列表(通常为空);return type、parameter list和function body与普通函数一样。
我们可以忽略参数列表和返回类型

auto f =[] { return 42}

调用find_if 查找words中长度大于sz的string。find_if只接受亿元谓词。没办法传递第二个参数表示长度。lambda能解决这一问题。
在lambda的捕获列表中捕获sz,因此函数体使用sz。

auto wc = find_if(words.begin(),words.end(),[sz](consyt string &a){ return a.size()>=sz;});

变量捕获的方式:
1.值捕获
2.引用捕获

posted @ 2023-03-27 21:46  修省  阅读(7)  评论(0编辑  收藏  举报