1. Function pointers and lambdas
Predicate Functions
Any function that returns a boolean is a predicate function, including unary(一元) predicate and binary(二元) predicate.
1 | // unary predicate |
Function pointers for generalization
1 | template<typename InputIter, typename UniPred> |
Lambdas
Lambdas are inline functions that can know about other variables.
1 | auto var = [capture-clause] (auto param) -> typereturn |
- We use
auto
because type is figured out in compile time. - We put outside variables your function uses into
[]
- We put parameters your function uses into
()
, and the type is delcared intoauto
. typereturn
is your function return
An example:
1 | int num = 0; |
How do functors, lambdas and function pointers relate?
A standard function, std::function<...>
is the one to rule them all. It’s the overarching type for anything callable in C++. Functors, lambdas and function pointers can all be casted to standard functions.
1 | std::function<void(int, double)> func; |
void
: the func return type;int, double
: the func parameter types
For example:
1 | std::function<void(int)> func = lambda; |
2. STL algorithms
STL algorithms: A collection of completely generic functions written by C++ devs! You need to
#include<algorithm>
before using these functions.
STL functions allow you to accomplish all of these and more!
- effective searching
- efficient sorting
- complex and concise(简洁的) data structure usage
- parallelized big data manipulation(操作)
- arrays with abilities
- smart pointers that destruct memory(销毁内存) for you.
- 本文作者: 夏花
- 本文链接: http://xiahua19.github.io/2022/07/25/cs106l-9-Functions-and-Algorithms/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!