函数式编程
dr.xun
迭代
展开
-
C++ Lambda 表达式
一、基本语法 [捕获列表](参数列表) mutable(可选) 异常属性 -> 返回类型 { // 函数体 } 语法规则:是一般函数的函数名被略去,返回值使用了一个 -> 的形式指示。唯一不同的是增加了“捕获列表”。 二、理解捕获列表 所谓捕获列表,其实可以理解为参数的一种类型, lambda 表达式内部函数体在默认情况下是不能够使用函数体外部的变量的,这时候捕获列表可以起到传递外部数据的作用。根据传递参数的行为,捕获列表 可分为以下几种: 1. 值捕获 与参数传值类似,值捕获原创 2020-11-15 11:28:30 · 535 阅读 · 0 评论 -
函数式编程之旅
折叠: f: (R, T) -> R f:函数,T: 集合,R:初始值及结果 结果与集合中的第二个元素再传递给函数f原创 2020-08-30 15:41:22 · 74 阅读 · 0 评论 -
采用FP实现删除字符串两端的空格
std::string trim_left(std::string s) { s.erase(s.cbegin(), std::find_if(s.cbegin(), s.cend(), [](char c) -> bool { return c != ' '; })); return s; } std::string trim_right(std::string s) { s.erase(std::find_if(s.crbegin(), s.crend(), [](char c) -&g.原创 2020-07-18 16:04:55 · 137 阅读 · 0 评论 -
采用FP实现求平均数
#include <iostream> #include "average.h" #include <numeric> #include <iterator> using namespace std; double average(const std::vector<int>& vecs) { return std::accumulate(vecs.cbegin(), vecs.cend(), 0) / (double)vecs.size().原创 2020-07-18 15:42:01 · 177 阅读 · 0 评论 -
采用FP实现计算每一个文件的行数
直接贴代码: count_files_lines.h #ifndef COUNT_FILES_LINES_H_ #define COUNT_FILES_LINES_H_ #include <string> #include <vector> int count_lines(const std::string& filename); std::vector<int> count_lines_in_files(const std::vector<std原创 2020-07-18 15:06:58 · 112 阅读 · 0 评论