简介
可调用对象可分为下面几种:
-
- 普通函数
- 函数指针
- 仿函数
- 匿名函数
- std::function() 和 std::bind // 标准库function类型.
xx是什么?使用场景? 如何使用? // what,where, how
lambda
一个lambda 表达式代表一个可调用的代码单元,可以将其理解成一个匿名的内联函数。
格式是:
[capture list](parameter list) -> return type {function body}
capture list 捕获列表是一个lambda 所在函数中定义的局部变量的列表。
可以忽略参数列表和返回类型,但必须有捕获列表和函数题。比如
auto f = [] { return 1; }
如果忽略了返回类型,lambda 表达式会根据代码推断出返回类型。
谓词 predicate, 即标准库算法传递的参数。 C++ named requirements: Predicate - cppreference.com
The Predicate requirements describe a callable that returns a value testable as a bool.
Predicate is typically used with algorithms that take input data (individual objects/containers) and a predicate, which is then called on input data to decide on further course of action。