`
zhangyu8374
  • 浏览: 94739 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用C语言实现函数语言中的Map和Reduce操作

阅读更多
在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)&square;
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说起
分享到:
评论

相关推荐

    map and reduceC语言实现

    根据提供的文件信息,本文将详细解释如何在C语言中实现Map和Reduce操作,并通过一个具体的示例代码来展示其实现过程。首先,我们先来理解一下Map和Reduce的基本概念。 ### Map和Reduce基本概念 #### Map操作 Map...

    python实现C语言经典100例

    "Python实现C语言经典100例"这个项目,旨在通过将C语言的经典例子用Python进行重写,帮助学习者更好地理解和应用Python,同时也展示了两种语言在解决问题上的异同。 1. **基础知识** - **Python语法**:Python的...

    c语言基础算法100例python和c语言版

    在编程世界中,C语言和Python都是非常重要的编程语言,各有其独特的特性和用途。"C语言基础算法100例Python和C语言版"是一个非常实用的学习资源,旨在帮助初学者通过实例来掌握基本的算法知识。在这个压缩包中,你将...

    C语言中文网Python教程

    【C语言中文网Python教程】是一份离线的Python学习资料,包含了多个主题,旨在帮助用户深入了解和掌握Python编程语言。这份教程通过一系列HTML文件提供VIP级别的内容,无需网络连接即可阅读。 首先,我们来看看...

    简单了解python filter、map、reduce的区别

    这篇文章主要介绍了简单了解python filter、map、reduce的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python中有一些非常有趣的函数,面试的时候可能...

    数组函数参考例题.rar

    数组函数在不同的编程语言中有着不同的实现和用法。例如,在JavaScript中,`Array.prototype`对象提供了丰富的数组函数,如`map()`用于映射每个元素,`filter()`用于筛选符合条件的元素,`reduce()`用于将数组元素...

    函数式编程很难,这正是你要学的原因共3页.pdf.zip

    对于Python开发者,可以学习使用`map()`、`filter()`、`reduce()`等函数,以及`lambda`表达式来实现函数式编程风格。而对于C语言,虽然其语法不直接支持函数式特性,但通过指针和回调函数,也可以实现某种程度的函数...

    python动态语言编程教程

    Python支持函数式编程风格,可以使用高阶函数(如map、filter和reduce)对数据进行处理。函数可以作为参数传递给其他函数,也可以作为返回值,这在实现模块化和抽象时非常有用。此外,Python的lambda函数提供了一种...

    mapreduce c源码

    MapReduce是一种分布式计算模型,由Google在2004年提出,主要用于处理...对于"phoenix-2.0.0",如果没有更多的上下文信息,只能推测它可能是一个与MapReduce相关的项目或库,具体功能和实现细节需要查看源代码来获取。

    MapReduce分布式计算平台编程示例

    - **3.3.3 reduce实现**:使用sort和uniq命令来汇总计数结果。 - **3.3.4 作业提交命令**:与C语言示例一样,需要使用Hadoop命令来提交作业。 #### 4. 技巧 为了更有效地利用MapReduce,以下是一些实用的技巧: *...

    Pythont特殊语法filter,map,reduce,apply使用方法

    这篇文章主要介绍了Pythont特殊语法filter,map,reduce,apply使用方法,需要的朋友可以参考下 (1)lambda lambda是Python中一个很有用的语法,它允许你快速定义单行最小函数。类似于C语言中的宏,可以用在任何需要...

    180110115-方澳阳-实验二语法分析1

    例如,用parseState和parseProducer函数解析Action表中的reduce操作,将字符串分解为规约、产生式头部和尾部。 实验结果部分未提供具体内容,但通常会展示输入代码源程序的词法分析和语法分析结果,包括识别的Token...

    Python之高阶函数共4页.pdf.zip

    在Python编程语言中,高阶函数是一门重要的概念,它是指可以接受一个或多个函数作为参数,或者返回一个新的函数的函数。高阶函数是函数式编程的核心特性之一,极大地提升了代码的灵活性和可复用性。这个名为"Python...

    python入门学习

    高级特性如切片、迭代、列表生成式、生成器、迭代器、函数式编程、高阶函数以及map、reduce、filter和sorted等内建函数也包含在教程中。Python的模块化编程也是教程的重点,包括如何使用模块、安装第三方模块以及...

    Python进阶

    Map、Filter和Reduce是三个在Python中广泛使用且功能强大的高阶函数。Map函数可以对可迭代对象的每个元素应用给定的函数;Filter函数根据提供的函数判断每个元素是否满足条件;Reduce函数则是将可迭代对象中的元素...

    等级考试C和苏大Python练习题库

    5. **函数式编程**:掌握高阶函数(如map、filter、reduce),闭包,装饰器等特性。 6. **面向对象编程**:理解类的继承、多态、封装,以及设计模式的应用。 苏州大学872课程可能涵盖了这些内容,并通过练习题库...

    JavaScript内核知识

    JavaScript作为一种支持函数式编程的语言,提供了许多特性来支持这种编程风格,如高阶函数、map/reduce/filter等。 #### 三、JavaScript核心知识点详解 - **闭包**:闭包是JavaScript中一个非常重要但有时也难以...

    廖雪峰老师的python3.pdf

    9. 返回函数、匿名函数和装饰器:这些是Python中实现高阶函数操作的几种方式。 10. 模块:展示了如何使用Python标准库中的模块,以及如何安装和使用第三方模块。 11. 面向对象编程:介绍了类和对象的定义、属性和...

    Python中的匿名函数和函数式编程

    在实际应用中,`map()`、`filter()`和`reduce()`等函数式编程工具可以使代码更简洁、可读性更强,并且由于它们通常是用C语言实现的,因此在处理大量数据时,效率也较高。 总之,Python中的匿名函数和函数式编程提供...

Global site tag (gtag.js) - Google Analytics