函数式编程(Functional Programming)是一种将计算当成数学函数,并避免数据可变状态的编程范式(Programming Paradigm)。C++是一门多范式语言(Multi-paradigm)所以也对FP有一定程度的支持。本文将简述一些C++中FP的常见写法。
lambda表达式
C++11开始引入了lambda表达式:支持代码中使用使用匿名函数。本着FP中函数也是一等公民的原则,匿名函数也可以成为函数参数、被传递或者被返回。
常见的std::for_each
写法:std::vector<int> numbers = {1, 2, 3, 4, 5};
std::for_each(numbers.begin(), numbers.end(), [](int num) {
std::cout << num * 2 << " ";
});
std::function
在C中传递函数往往需要声明函数指针,函数指针一般用于在异步场景中被注册为回调函数。C++中可以使用一种通用的多态函数封装结构std::function
来存储、拷贝、调用一个可被调用的结构 (lambda, 函数指针, 或函数)。使用函数式相关的功能往往需要引入<functional>
头文件。例: