标签:数列 算法 prime prim 练习 模板与泛型编程 存在 知识库 泛型
---恢复内容开始---
声明:
1、面向对象编程和泛型编程都是处理在编写程序时不知道类型的情况,不同之处在于,OOP能处理类型在程序运行之前都未知的情况,而在泛型编程中,在编译时就能获知类型了。
2、泛型编程与面向对象编程一样,都依赖于某种形式的多态性。面向对象编程中的多态性在运行时应用于存在继承关系的类。
3、在泛型编程中,我们所编写的类和函数能够多态地用于跨越编译时不相关的类型。一个类或一个函数可以用来操纵多种类型的对象。标准库中的容器、迭代器和算法是很好的泛型编程的例子。标准库用独立于类型的方式定义每个容器、迭代器和算法,因此几乎可以在任意类型上使用标准库的类和函数。
一、定义模板
1、重载函数:
1 int compare(const string &v1,const string &v2) 2 { 3 if (v1 < v2) 4 { 5 return -1; 6 } 7 else if (v1 > v2) 8 { 9 return 1; 10 } 11 12 return 0; 13 } 14 15 int compare(const double &v1,const double &v2) 16 { 17 if (v1 < v2) 18 { 19 return -1; 20 } 21 else if (v1 > v2) 22 { 23 return 1; 24 } 25 26 return 0; 27 }
唯一差异是参数的类型不同,函数体一样。
定义函数模板:。函数模板是一个独立于类型的函数,可以作为一种方式,产生函数的特定类型版本。
1 template<typename T> 2 int compare(const T &v1,const T &v2) 3 { 4 if (v1 < v2) 5 { 6 return -1; 7 } 8 else if (v1 > v2) 9 { 10 return 1; 11 } 12 13 return 0; 14 }
模板定义以关键字template开始,后跟一个模板参数列表。这是一个逗号分隔的一个或多个模板参数(template parameter)的列表,用<>包围。模板列表不能为空
2、
3、
二、模板实参推断
1、
2、
3、
三、重载与模板
1、
2、
3、
四、可变参数模板
1、
2、
3、
五、模板特例化
1、
2、
3、
---恢复内容结束---
标签:数列 算法 prime prim 练习 模板与泛型编程 存在 知识库 泛型
原文地址:http://www.cnblogs.com/zlz099/p/6932023.html