函数模板的使用

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

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

#include "stdafx.h"
#include <malloc.h>
int max(int a,int b)
{
return ;
}
int max(int a,int b,int c)
{
return ;
}
//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=;
for(ti i=;i<len;i++)
{
if(array[i]>imax)
{
imax=array[i];//取得最大值
}
}
return imax;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[]={,,,,,};
float af[]={1.0,3.0,1.0,,,99.8877};
printf("%d,%d\n",max(,),max(,,));
printf("数组a最大值为%d \n",max(a,sizeof(a)/sizeof(int)));
printf("数组a最大值为%f ",max(af,sizeof(af)/sizeof(float))); getchar();
return ;
}

mfc 函数模板的更多相关文章

  1. c++函数模板作为类的成员函数,编译报错LNK2019的解决方法

    为了使某个类的成员函数能对不同的参数进行相同的处理,需要用到函数模板,即template<typename T> void Function(). 编译时报错LNK2019 解决方法: 1 ...

  2. C++STL - 函数模板

    模板主要是为了泛型编程,做到与类型无关 模板有函数模板和类模板,本文主要整理的是函数模板 1.函数模板定义 template<typename 类型形参1,typename 类型形参2,...& ...

  3. 使用getopt_long来解析参数的小函数模板

    getopt_long原型 #define no_argument 0 #define required_argument 1 #define optional_argument 2 struct o ...

  4. C++函数重载和函数模板

    1.函数重载 这是小菜鸟写的一个例子. 函数重载应该注意以下几点: 1.1重载函数有类似的功能: 1.2只能以参数的类型(形参个数和类型)来重载函数, int max(int a,int b);flo ...

  5. 零值初始化&字符串常数作为函数模板参数

    1.在定义一个局部变量时,并希望该局部变量的初始化一个值,可以显示调用其默认构造函数,使其值为0(bool类型默认值为false). template <typename T> void ...

  6. 让gcc支持成员函数模板的trick

    让gcc支持成员函数模板的trick 罗朝辉 (http://www.cnblogs.com/kesalin/) 本文遵循“署名-非商业用途-保持一致”创作公用协议   gcc 4.7.3 不支持成员 ...

  7. 不可或缺 Windows Native (16) - C++: 函数重载, 缺省参数, 内联函数, 函数模板

    [源码下载] 不可或缺 Windows Native (16) - C++: 函数重载, 缺省参数, 内联函数, 函数模板 作者:webabcd 介绍不可或缺 Windows Native 之 C++ ...

  8. Effective C++ -----条款45:运用成员函数模板接受所有兼容类型

    请使用member function templates(成员函数模板)生成”可接受所有兼容类型“的函数. 如果你声明member templates 用于“泛化copy构造”或“泛化assignme ...

  9. c++ 左值右值 函数模板

    1.先看一段代码,这就是一种函数模板的用法,但是红色的部分如果把a写成a++或者写成一个常量比如1,都是编译不过的,因为如果是a++的话,实际上首先是取得a的 值0,而0作为一个常量没有地址.写成1也 ...

随机推荐

  1. PHP获取用户的真实IP地址

    本文出至:新太潮流网络博客 PHP获取用户的真实IP地址,非代理IP function getClientIP(){ global $ip; if(getenv("HTTP_CLIENT_I ...

  2. Axure响应式进阶

    Axure响应式进阶 2018年6月2日luodonggan 随大屏幕分辨率普及,网页设计在交互阶段就必须考虑响应式方案,Axure7作为我偏爱的交互设计工具果然也没让大家失望的新增了Adaptive ...

  3. 从AggregateException看异常类的设计

    异常是程序在有bug时最直观的表现形式,不担心有bug存在,而担心bug埋没在大堆的代码中而发现不了. 这篇随笔简单谈谈从AggregateException类源码(http://www.projky ...

  4. Sql Server中的谓词和运算符

    谓词和运算符配合使用是我们得到理想数据的最佳途径. 一.浅谈谓词 谓词的概念:一个运算结果为True.False或Unknown的逻辑表达式.它的运用范围有:where子句.Having子句.Chec ...

  5. [翻译] CNPPopupController

    CNPPopupController CNPPopupController is a simple and versatile class for presenting a custom popup ...

  6. 理解http请求

    HTTP请求的GET方法可以用来抓取网页. HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则,计算机专家设计出HTTP,使HTTP客户(如Web浏览 ...

  7. 《C++ Primer Plus》读书笔记之十—类和动态内存分配

    第12章 类和动态内存分配 1.不能在类声明中初始化静态成员变量,这是因为声明描述了如何分配内存,但并不分配内存.可以在类声明之外使用单独的语句进行初始化,这是因为静态类成员是单独存储的,而不是对象的 ...

  8. web.config设置之system.webServer 详细介绍,为网站设置默认文档

    如何:为 IIS 7.0 配置 <system.webServer> 节2008-06-14 22:26http://technet.microsoft.com/zh-cn/sysinte ...

  9. C# HttpWebRequest 笔记

    目录: 1,HttpWebRequest 实例化 2,GetResponse 获取请求结果 3,获取结果 4,获取流信息 HttpWebRequest 是一个Http 请求类,继承于 WebReque ...

  10. 【MSSQL教程】#001 整体思维导图

    整个MSSQL体系的一个思维导图,方便理解整个MSSQL需要学习那些方面的知识.