让编程改变世界
Change the world by program
按照面向过程式范型把程序划分成不同的函数。
按照面向对象式范型把代码和数据组织成各种各样的类并建立类之间的继承关系。
在这一讲里,小甲鱼将给大家介绍另一种范型: 泛型编程! 范型编程技术支持程序员创建函数和类的蓝图(即模板,template),而不是具体的函数和类。 这些模板可以没有任何类型:它们可以处理的数据并不仅限于某种特定的数据类型。 当程序需要用到这些函数中的某一个时,编译器将根据模板即时生成一个能够对特定数据类型进行处理的代码版本。 泛型编程技术可以让程序员用一个解决方案解决多个问题。 接下来的这几讲里,我们先来学习如何编写和使用自己的泛型代码,然后再跟大家介绍标准模板库(Standard Template Library, STL)。 在泛型编程技术里,我么仍然需要编写自己的函数和类,但不必限定它们所使用的数据类型。 只需要使用一个占位符(通常用字母T来表示)然后用这个占位符来编写函数。 当程序需要这段代码时,你提供数据类型,编译器将根据你的模板即时生成实用的代码。 简单的说,编译器把模板里的每一个T替换为所提供的数据类型。 是不是有点像那个啥?那个#Define。。。。 我们回来说说STL库,STL库是泛型编程技术的经典之作,它包含了许多非常有用的数据类型和算法。 有着这玩意,我们以后装逼那成本敢情就低很多了,有木有!! 好了,咱赶紧落实起来吧,好不容易哄得大家激情万丈,可不能浪费! 。。。。。。 。。。 以下代码定义了一个名为foo()的函数模板: [codesyntax lang="cpp"]template <class T> void foo(T param) { // do something }[/codesyntax] 这里有几件事值得注意:
void swap(int &a, int *&b) { int tmp = a; a = b; b = tmp; }[/codesyntax] 简单分析下: