一、定义

C++ 函数式编程
以纯函数为核心,使用 Lambda、STL 算法、函数对象,不依赖可变状态,通过函数组合完成逻辑,代码更简洁、安全、易维护。


二、C++ 函数式 4 大核心

1. 纯函数(灵魂)

  • 相同输入 → 永远相同输出
  • 不修改外部变量、无副作用
  • 多用 const,少用全局/静态变量
int add(int a, int b) const { return a + b; } // 纯函数

2. Lambda 表达式(工具)

匿名函数,让函数变成一等公民(可传参、可赋值)。

auto square = [](int x) { return x * x; };

3. 不可变性(安全)

  • 尽量用 const 变量、const 函数
  • 不修改容器,生成新数据而非原地修改

4. 函数组合(写法)

用 STL 算法替代 for/while 循环:

  • transform → map
  • copy_if → filter
  • accumulate → reduce

三、C++ 函数式 标准示例(一行搞定数据处理)

#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>

using namespace std;

int main() {
    vector<int> v = {1,2,3,4,5};
    
    // 1. filter:筛选偶数
    vector<int> even;
    copy_if(v.begin(), v.end(), back_inserter(even), [](int x){return x%2==0;});
    
    // 2. map:全部平方
    transform(even.begin(), even.end(), even.begin(), [](int x){return x*x;});
    
    // 3. reduce:求和
    int sum = accumulate(even.begin(), even.end(), 0);
    
    cout << sum << endl; // 输出 20
    return 0;
}

无循环、无修改变量、纯函数组合 → 标准函数式。


四、C++ 函数式 核心特点

  1. 少状态、少变量、少bug
  2. 并发安全(不共享可变数据)
  3. 代码极简洁(算法替代循环)
  4. 现代 C++ 主流写法(C++11 及以上必备)
  5. 不是新范式,是更干净的编程思想

五、汇总

C++ 函数式编程 = 纯函数 + Lambda + 不可变数据 + STL算法组合,无副作用、无循环、高安全。


总结

  • 函数式是思想,C++ 完美支持
  • 核心:纯函数、Lambda、函数组合
  • 写法:用算法替代循环,用 const 保证不变
  • 优势:简洁、安全、少bug、高并发

更多推荐