【项目1-排序函数模板】
  已知

void Sort(int a[],int size);
void Sort(double a[],int size);

是一个函数模板的两个实例,其功能是将数组a中的前size个元素按从小到大顺序排列。试设计这个函数模板。

【项目2-两个成员的类模板】
  设有如下的类声明:

class  Test{
public:
  void SetData1(int val) { data1=val; }
  void SetData2(double val) {data2=val: }
  int GetData1()  { return data1; }
  double GetData2() { return data2; }
private:
  int data1;
  double  data2;
}

(1)试将此类声明改为类模板声明,使得数据成员data1和data2可以是任何类型。
(2)请为该类增默认构造函数、带两个参数分别对应两个数据成员初值的构造函数,以及复制构造函数。

【项目3-数组类模板】
  在数组类的基础上,将之改造为类模板,以使数组中可以存储各种类型的数据。

template <class T>  //数组类模板定义
class Array
{
private:
    T* list;        //用于存放动态分配的数组内存首地址
    int size;       //数组大小(元素个数)
...
};