泛型编程的概念
、 不考虑具体数据类型的编程方式,对于Swap数值交换函数可以考虑下面的泛型写法
Void Swap( T & a , T& b)
{
T t = a;
a = b;
b = t;
}
swap 泛型写法中的T 不是一个具体的数据类型,而是泛指任意的数据类型
c++ 中泛型编程
函数模板
一种特殊的函数,可用不同类型进行调用,看起来和普通函数很相似,区别是类型可被参数化
template < typename T>
void Swap( T & a, T & b)
{
T t = a;
a = b;
b = t;
}
template 关键字 用于声明开始进行泛型编程
typename 关键字用于声明泛指类型
意义: 可以代码复用,在算法中尤其用到比较多
下面通过一段函数模板使用示例代码展示其意义:
#include <iostream>
#include <string>
using namespace std;
template < typename T >
void Swap(T& a, T& b)
{
T c = a;
a = b;
b = c;
}
template < typename T >
void Sort(T a[], int len)
{
for(int i=0; i<len; i++)
{
for(int j=i; j<len; j++)
{
if( a[i] > a[j] )
{
Swap(a[i], a[j]);
}
}
}
}
template < typename T >
void Println(T a[], int len)
{
for(int i=0; i<len; i++)
{
cout << a[i] << ", ";
}
cout << endl;
}
int main()
{
int a[5] = {5, 3, 2, 4, 1};
Println(a, 5);
Sort(a, 5);
Println(a, 5);
string s[5] = {"Java", "C++", "Python", "go", "c#"};
Println(s, 5);
Sort(s, 5);
Println(s, 5);
return 0;
}