如何在C语言中实现简单的泛型编程(一)

题外话

              鄙人最近在家里听斯坦福大学的开放课程——《编程范式Programming Paradigms》。

附上veryCD的资源下载地址:

http://www.verycd.com/topics/2838268/

        这个是英文授课,现在还是没有中文或英文字幕的。就课程来说非常不错。其中Lecture 4中讲到了一种在C语言中不用C++中的template实现泛型编程的方法。我在这里总结了它的笔记后,加入了我自己的一些思考和试验写下了这篇文章分享一些经验给大家。

正题

        泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。所谓泛型(Genericity),是指具有在多种数据类型上皆可操作的含意。C++通过参数化类型来实现通用的容器。如Java则引入了单根继承的概念。比泛型更加让你熟悉的可能就是STL,Standard template library,标准模板库。STL是一种高效、泛型、可交互操作的软件组件。STL以迭代器 (Iterators)和容器(Containers)为基础,是一种泛型算法(Generic Algorithms)库,容器的存在使这些算法有东西可以操作。STL包含各种泛型算法(algorithms)、泛型指针(iterators)、泛型容器(containers)以及函数对象(function objects)。STL并非只是一些有用组件的集合,它是描述软件组件抽象需求条件的一个正规而有条理的架构。

        而在C语言中,同样也可以通过一些手段实现这样的泛型编程。如通过宏。这里讲的是另一种方法——通过无类型指针void*。

  

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值