1. 程式人生 > >c++模板類例項化 簡單例子

c++模板類例項化 簡單例子

template<class T> 定義一個模板類

注意模板類看作一個數據型別(int, float)

class A

{

public:

A();

T getlist(T x,int n);

private:

T data[maxsize];

}//構造一個類

下面寫main 主函式測試

模板類物件:

A<int>a();//int 可以為其他的資料型別 a 為構造的模板類的物件

注意:一些資料型別為簡單資料型別時可用cout顯示

但是一些構造型別,則需要呼叫其相應的顯示函式

#include <iostream>
using namespace std;

const int MAXSIZE = 1000;
template<class T>
class Seqlist
{
public:
	Seqlist() { length = 0; }
	Seqlist(const T a[], int n);
	int locate(T x);
	T get(int i);//獲取第i個位置元素
private:
	T data[MAXSIZE];
	int length;
};
template<class T>
Seqlist<T>::Seqlist(const T a[], int n)
{
	if (n > MAXSIZE)throw"陣列長度超過最大長度";
	for (int i = 0; i < n; i++)
	{
		data[i] = a[i];
	}
	length = n;
}
template<class T>
T Seqlist<T>::get(int i)
{
	if (i<1 || i>length)throw"位置非法";
	return data[i - 1];
}
template<class T>
int Seqlist<T>::locate(const T x)
{
	for (int i = 0; i < length; i++)
		if (x == data[i])
			return i + 1;
	return 0;//查詢失敗
}
int main()//例項化
{
	int a[7] = { 1,2,3,4,5,6,7 };
	Seqlist<int>list(a, 7);
	int v = list.locate(5);
	cout << v << endl;
	int d = list.get(5);
	cout << d << endl;
}