#include< iostream >
using namespace std;
template < typename T >    //定义函数模板，T为类型参数
T max( T ary[ ], int n )      //T型数组求最大值
{
    T max_val = 0;        //保存最大值的变量
    for( int i=0; i<n; i++)      //遍历数组
    {
      if( ary[i] > max_val )    //如果当前元素比当前最大值大
      {
        max_val = ary[i];     //修改保存最大值变量
      }
    }
    return max_val;          //返回最大值
}
void main()                 //理解函数模板
{
    int a1[4] = {2,8,4,6};     //定义整型数组并初始化
    int i = max(a1, 4);   //调用函数模板，求整型数组的最大值，此时T被int取代
    double a2[4] = {2.0, 1.2, 4.1, 3.4 };  //定义浮点型数组并初始化
    double d = max(a2, 4);    //调用函数模板，此时T被double取代
    cout<<"i_max = "<<i<<endl;
    cout<<"d_max = "<<d<<endl;
}
