C++泛型函數及模版類

什麼是泛型編程?ios

簡單來講,泛型編程,意思就是針對普遍類型的編程方式。具體類型能夠有不一樣的實現方式,可是針對普遍類型編程,就能在須要調用時才指定參數類型或者調用類型。算法

泛型編程是一種基於發現高效算法的最抽象表示的編程方法。也就是說,以算法爲起點並尋找能使其工做而且有效率的工做的最通常的必要條件集。編程

能夠想象的是,不少算法都須要相同的必要條件集,而且這些必要條件集有不一樣的實現方式。STL標準模版庫就是泛型編程的例子。函數

泛型函數怎麼寫?學習

#include<iostream>
using namespace std;
template<typename T>
T * My_find(T *array,T n,T x){
	T* p = array;
	int i;
	for(i=0;i<n;i++){
		if(*p == x){
			return p;
		}
		p++;
	}
	return 0;
}
int main(){
	int a[] = {1,2,3,4,5,6,7,8,10};
	int *result = My_find<int>(a,10,3);
	cout<<(*result)<<"\n"<<endl;
	return 0;
}

上面這個例子是一個泛型函數的實現。spa

template<typename T> 

這句話的意思是指設定一個泛型類型T。接下來就直接能夠將T做爲一個參數類型使用了。blog

int *result = My_find<int>(a,10,3);

這是泛型函數的調用方法。尖括號指定函數泛型的具體類型,而後傳入參數。io

模版類怎麼寫?class

除了泛型函數,最重要的就是泛型類也就是模版類了。效率

#include<iostream>
using namespace std;

template<class T>
class Operate{
	public:
	static T add(T a,T b){
		return a+b;
	}
	static T Mul(T a,T b){
		return a*b;
	}
	static T Judge(T a,T b=1){
		if(a>=0)
		return a;
		else
		return a/b;
	}
};
int main(){
	int a,b,c,d,e,x,y,z;
	a=1,b=2,c=3,d=4,e=5;
	x=Operate<int>::add(a,b);
	y=Operate<int>::Mul(c,d);
	z=Operate<int>::Judge(e,b);
	cout<<x<<" "<<y<<" "<<z<<" "<<endl;
	return 0;
}

上面這個例子是一個模版類的實現。

template<class T>

這句話定義了一個模版類類型。

x=Operate<int>::add(a,b);
y=Operate<int>::Mul(c,d);
z=Operate<int>::Judge(e,b);

調用使用了模版類的方法時,也是用尖括號指定模版類的具體實現類。

以上就是C++泛型函數及模版類的基本使用方法。

泛型編程普遍的應用於STL標準模版庫中,深刻學習STL,固然要掌握好泛型編程。

相關文章
相關標籤/搜索