lambda表达式的学习

样例代码:

image

解析:

  1. count_if(迭代器a,迭代器b,条件函数),范围为[a,b)
  2. a.find(b)在string a中寻找string b并返回string::size_type类型的索引,若不存在,则返回string::npos
  3. string::npos是size_type类型的最大值
  4. cpp中存在三种方式可以创建/传递一个可以被调用的对象:
    函数指针
    仿函数(Functor)
    Lambda 表达式
  5. Lambda表达式格式形如:
auto Plus = [](int a, int b) { return a + b; };
[ capture-list ] ( params ) mutable(optional) exception(optional) attribute(optional) -> ret(optional) { body } 
  • capture-list:捕获列表。前面的例子 auto Plus = [](int a, int b) { return a + b; }; 没有捕获任何变量。
  • params:和普通函数一样的参数。
  • mutable:只有这个 Lambda 表达式是 mutable 的才允许修改按值捕获的参数。
  • exception:异常标识。暂时不必理解。
  • attribute:属性标识。暂时不必理解。
  • ret:返回值类型,可以省略,让编译器通过 return 语句自动推导。
  • body:函数的具体逻辑。
  1. 函数指针格式:
// 一个指向有两个整型参数,返回值为整型参数的函数指针类型
int (*)(int, int);

// 通常我们用 typedef 来定义函数指针类型的别名方便使用
typedef int (*Plus)(int, int);

// 从 C++11 开始,更推荐使用 using 来定义别名
using Plus = int (*)(int, int);

参考链接:

1.https://blog.csdn.net/Hao_ge_666/article/details/90695409
2.https://blog.csdn.net/lmb1612977696/article/details/81455708
3.https://zhuanlan.zhihu.com/p/150554945

posted @ 2023-08-12 17:15  adamaik  阅读(8)  评论(0编辑  收藏  举报