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;
}
浙公网安备 33010602011771号