第56课 函数模板的概念和意义
Posted wanmeishenghuo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第56课 函数模板的概念和意义相关的知识,希望对你有一定的参考价值。
发散性问题:
C++有几种交换变量的方法?
定义宏代码块与函数:
实验:
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 #define SWAP(t, a, b) 7 do 8 { 9 t c = a; 10 a = b; 11 b = c; 12 }while(0) 13 14 15 void Swap(int& a, int& b) 16 { 17 int c = a; 18 a = b; 19 b = c; 20 } 21 22 void Swap(double& a, double& b) 23 { 24 double c = a; 25 a = b; 26 b = c; 27 } 28 29 void Swap(string& a, string& b) 30 { 31 string c = a; 32 a = b; 33 b = c; 34 } 35 36 int main() 37 { 38 int a = 0; 39 int b = 1; 40 41 Swap(a, b); 42 43 cout << "a = " << a << endl; 44 cout << "b = " << b << endl; 45 46 double m = 2; 47 double n = 3; 48 49 Swap(m, n); 50 51 cout << "m = " << m << endl; 52 cout << "n = " << n << endl; 53 54 string d = "Delphi"; 55 string t = "Tang"; 56 57 Swap(d, t); 58 59 cout << "d = " << d << endl; 60 cout << "t = " << t << endl; 61 62 return 0; 63 }
结果如下:
每当我们需要交换两个变量的值时,就需要重载一个函数,这是重复性的劳动。
优缺点分析:
我们需要找到一种方法可以集合宏和函数的优点。
泛型编程:
函数模板:
实验:
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 template < typename T > 7 void Swap(T& a, T& b) 8 { 9 T c = a; 10 a = b; 11 b = c; 12 } 13 14 template < typename T > 15 void Sort(T a[], int len) 16 { 17 for(int i=0; i<len; i++) 18 { 19 for(int j=i; j<len; j++) 20 { 21 if( a[i] > a[j] ) 22 { 23 Swap(a[i], a[j]); 24 } 25 } 26 } 27 } 28 29 template < typename T > 30 void Println(T a[], int len) 31 { 32 for(int i=0; i<len; i++) 33 { 34 cout << a[i] << ", "; 35 } 36 37 cout << endl; 38 } 39 40 int main() 41 { 42 int a[5] = {5, 3, 2, 4, 1}; 43 44 Println(a, 5); 45 Sort(a, 5); 46 Println(a, 5); 47 48 string s[5] = {"Java", "C++", "Pascal", "Ruby", "Basic"}; 49 50 Println(s, 5); 51 Sort(s, 5); 52 Println(s, 5); 53 54 return 0; 55 }
运行结果如下:
小结:
以上是关于第56课 函数模板的概念和意义的主要内容,如果未能解决你的问题,请参考以下文章