• mfc 函数模板


    函数模板的使用
    
    一、 函数模板的使用
       使用函数模板可以简化 形参个数相同,而类型不同的函数。  
     template<typename T>   //可以用class替换typename
    
     int max(int array[],int len) // int array[len]
    {
      int imax=0;
       for(int i=0;i<len;i++)
       {
          if(array[i]>imax)
          {
              imax=array[i];//取得最大值
          }
       }
       return imax;
    }
    
    float max(float array[],int len) // int array[len]
    {
        float imax=0;
        for(int i=0;i<len;i++)
        {
            if(array[i]>imax)
            {
                imax=array[i];//取得最大值
            }
        }
        return imax;
    }
    
    double max(double array[],int len) // int array[len]
    {
        double imax=0;
        for(int i=0;i<len;i++)
        {
            if(array[i]>imax)
            {
                imax=array[i];//取得最大值
            }
        }
        return imax;
    }
    
    111,222
    6
    99.887703

    使用模板后代码,不同类型的重载 ,只需要定义一个模板函数

    #include "stdafx.h"
    #include <malloc.h>
    int max(int a,int b)
    {
        return 111;
    }
    int max(int a,int b,int c)
    {
        return 222;
    }
    //int max(int array[],int len) // int array[len]
    //{
    //  int imax=0;
    //   for(int i=0;i<len;i++)
    //   {
    //      if(array[i]>imax)
    //      {
    //          imax=array[i];//取得最大值
    //      }
    //   }
    //   return imax;
    //}
    //
    //float max(float array[],int len) // int array[len]
    //{
    //    float imax=0;
    //    for(int i=0;i<len;i++)
    //    {
    //        if(array[i]>imax)
    //        {
    //            imax=array[i];//取得最大值
    //        }
    //    }
    //    return imax;
    //}
    
    template <class S,class ti> S max(S array[],ti len) // int array[len]
    {
        S imax=0;
        for(ti i=0;i<len;i++)
        {
            if(array[i]>imax)
            {
                imax=array[i];//取得最大值
            }
        }
        return imax;
    }
    int _tmain(int argc, _TCHAR* argv[])
    { 
         int a[6]={1,2,3,4,5,6};
         float af[6]={1.0,3.0,1.0,0,0,99.8877};
         printf("%d,%d
    ",max(1,2),max(1,1,1));
         printf("数组a最大值为%d 
    ",max(a,sizeof(a)/sizeof(int)));
         printf("数组a最大值为%f ",max(af,sizeof(af)/sizeof(float)));
        
        getchar();
        return 0;
    }
  • 相关阅读:
    偏态分布的均值与中位数关系
    Leetcode 769. Max Chunks To Make Sorted
    【STL】max_element()函数
    [LeetCode] 1338. Reduce Array Size to The Half
    [LeetCode] 985. Sum of Even Numbers After Queries
    [LeetCode] 984. String Without AAA or BBB
    [LeetCode] 1405. Longest Happy String
    [LeetCode] 1646. Get Maximum in Generated Array
    [LeetCode] 926. Flip String to Monotone Increasing
    [LeetCode] 1658. Minimum Operations to Reduce X to Zero
  • 原文地址:https://www.cnblogs.com/whzym111/p/6179192.html
Copyright © 2020-2023  润新知