在Google 的论文《MapReduce:Simplified Data Processing on Large Clusters》中提到“Our abstraction is inspired by the map and reduce primitives present in Lisp and many other functional lanuages.”。对于大部分不熟悉函数语言的程序员来说,可能并不能够彻底理解Map和Reduce的具体含义。在这篇文章中,将采用C语言实现函数语言中的Map和Reduce操作。
简单来说,Map是对一组数据中的每个元素进行操作,产生一组全新的数据;Reduce是对这组数据进行归约,得到一个相对简单的结果。现在就让我们用C语言来描述它们。
#include <stdio.h>
//函数指针申明
typedef int (*mapFunction)(int);
typedef int (*reduceFunction)(int,int);
#define ERROR -1;
//-----------------Map和Reduce操作-----------------
/*
* 对list数组的数据进行处理,然后存储在list数组中
*/
void map(mapFunction func,int *list,int len){
int i;
for(i=0;i<len;i++){
list[i] = func(list[i]);
}
}
int reduce(reduceFunction func,int *list,int len){
if(len <= 0){
return ERROR;
}
int retVal = 0;
int i;
for(i=0;i<len;i++){
retVal = func(retVal,list[i]);
}
return retVal;
}
//-----------------------测试-------------------------
int square(int i){
return i*i;
}
int add(int i,int j){
return i+j;
}
int main(int argc,char*argv[]){
int array[5];
int i;
for(i=0;i<5;i++){
array[i] = i;
}
mapFunction mapFuncPointer = (mapFunction)□
reduceFunction reduceFuncPointer = (reduceFunction)&add;
map(mapFuncPointer,array,5);
int result = reduce(reduceFuncPointer,array,5);
printf("The result is %d\n",result);
return 0;
}
参考:(1)
从Map和Reduce说起
分享到:
相关推荐
用C语言实现polyfit多项式拟合,已知离散点上的数据集,即已知在点集上的函数值,构造一个解析函数(其图形为一曲线)使在原离散点上尽可能接近给定的值。
用C语言实现正弦余弦函数,不实用数学库里面的正弦余弦函数
C语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言...
我写的malloc函数 用c语言实现 增加了合并内存释放内存的功能
用C语言实现MD5哈希函数,它是将文件的每一行进行MD5加密,输出一个128位的哈希值。
由于matlab程序将各信号处理函数封装,无法看到原始代码,这里是其中resample函数的C语言实现源码,可实现任意整数倍上采及下采
本文给出C语言实现函数查表跳转程序,感兴趣的朋友可以看看。
C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言函数库大全C语言...
用c语言实现协方差函数,方便c语言算法的学习。把c语言用在应用数学上,解析数学公式。
C语言指针函数和函数指针详细介绍.
一个以C语言钩子函数来实现鼠标操作的demo
C语言实现python的butter函数,自测可用。已经在商用产品中使用了。
用C语言编写正态分布函数,一个用C语言实现正态分布的例子。
代码验证请看我的博客: http://blog.csdn.net/zone53/article/details/78280901
c语言中的打印函数printf的实现原理。
c语言实现的一个简单的日志函数, 主要是实现可变参数函数的使用技巧!
欧拉函数 C语言实现 #include "iostream" #include "math.h" #define maxsize 100 using namespace std; typedef struct node { int num; int total; }struct_num; struct_num a[maxsize]; int is_prime(int n)
通过c语言实现matlab函数 xcorr的计算,比较全面 集成了unbiased biased cross 等运算函数
C语言实现trim函数,函数名:trim,参数:源字符串、目的字符串...
C语言函数原型功能及其头文件 C语言函数原型功能及其头文件