#include< iostream >
using namespace std;
template < typename T >    //定义函数模板，T为类型参数
T min( T ary[ ], int n )      //T型数组求最大值
{
    T min_val = ary[0]; //定义保存最小值的变量，并假定最小值为ary[0]
    for( int i=1; i<n; i++)      //遍历数组，求最小值
    {
      if(ary[i]<min_val)
      {
        min_val = ary[i];
      }
    }
    return min_val;          //返回最小值
}
void main()
{
    int a1[4] = {5,3,1,9};     //定义整型数组并初始化
    int i = min(a1, 4);   //调用函数模板，求整型数组的最小值，此时T被int取代
    double a2[4] = {2.1, 1.2, 4.3, 3.4 };  //定义浮点型数组并初始化
    double d = min(a2, 4);    //调用函数模板，此时T被double取代
    cout<<"i_min = "<<i<<endl;
    cout<<"d_min = "<<d<<endl;
}