编程范式|程序世界里的编程范式,探索编程本质 (3)

下面这个示例中,先定义了一个函数对象counter(struct里定义函数)。这个函数对象需要一个Cond的函数对象,它是个条件判断函数,如果满足条件,则加 1,否则加 0。

然后,用上面的counter函数对象和reduce函数共同来打造一个counter_if算法

当条件满足的时候我就记个数,也就是统计满足某个条件的个数。

//对象counter,满足Cond函数的条件,就将参数c 加 1。 template<class T, class Cond> struct counter { size_t operator()(size_t c, T t) const { return c + (Cond(t) ? 1 : 0); } }; //count_if函数,返回上面文章中编写使用的reduce函数 template<class Iter, class Cond> size_t count_if(Iter begin, Iter end, Cond c){ return reduce(begin, end, 0, counter<Iter::value_type, Cond>(c)); }

当我需要统计薪资超过 1 万元的员工的数量时,参数3为Cond条件函数,{ return e.salary > 10000; }一行代码就完成了

size_t cnt = count_if(staff.begin(), staff.end(), { return e.salary > 10000; }); 函数式编程 修饰器模式 面向对象编程 原型编程范式 逻辑编程范式

前两小段,是编程范式的简单介绍,C语言到C++的演化,
未完待续。。。。。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywsyw.html