C++ 模板

快速排序与模板 以及动态分配内存空间(new 与delete )

 一、模板函数

#include<iostream>
using namespace std;

template<class Type>
int Partition(Type &st,int low,int high)
{
	int l=low;
	int h=high;
	st[0]=st[l];
	while(l<h)
	{
		while(l<h && st[h]>=st[0]) h--;
		st[l]=st[h];
		while(l<h && st[l]<=st[0])l++;
		st[h]=st[l];
	}
	st[l]=st[0];
	return l;
}

template<class Type>
void QSort(Type &st,int low, int high)
{
	if(low<high) 
	{
		int p=Partition(st,low,high);
		QSort(st,low,p-1);
		QSort(st,p+1,high);
	}
}

int main()
{
	int n;
	cin>>n;
	int *a=new int[n+1];
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	QSort(a,1,n);
	for(int i=1;i<=n;i++)
		cout<<a[i]<<" ";
	cout<<endl;
	cin>>n;
	delete[] a;
	a=NULL;
	return 0;
}

 

二、模板类

//类模板的定义
template<class T>
class Stack{
public:
	Stack(unsigned int size=100);
	~Stack();
	void push(T value);
	T pop();
private:
	unsigned int size;
	unsigned int sp;
	T *data;
}

//类模板中各个函数的定义(实现)
template<class T>
Stack<T>::Stack(unsigned int size)
{
	this->size=size;
	data=new T[size];
	sp=0;
}

template<class T>
Stack<T>::~Stack()
{
	delete[] data;
	data=NULL;
}

template<class T>
void Stack<T>::push(T value)
{
	data[sp++]=value;
}

template<class T>
T Stack<T>::pop()
{
	return data[--sp];
}

 利用模板类快速创建 所需要的类型的类 同时使用类

int main()
{
	Stack<int> intStack; //创造一个整形的类(利用模板类)
    Stack<float> floatStack; //创造一个浮点型的类

	intStack.push(1);  //调用函数
	intStack.push(3);

	intStack.pop();

	return 0;


}

 

posted @ 2014-11-13 10:40  zhoudan  阅读(103)  评论(0)    收藏  举报