函数模板的使用

一、 函数模板的使用
使用函数模板可以简化 形参个数相同,而类型不同的函数。
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. leveldb源码分析--插入删除流程

    由于网络上对leveldb的分析文章都比较丰富,一些基础概念和模型都介绍得比较多,所以本人就不再对这些概念以专门的篇幅进行介绍,本文主要以代码流程注释的方式. 首先我们从db的插入和删除开始以对整个体 ...

  2. Oracle EBS AR 客户取数SQL

    SELECT acct.cust_account_id, acct.party_id, acct.account_number, party.party_name, lkp1.meaning part ...

  3. REST Framework 的分页

    分页: PageNumberPagination from rest_framework.pagination import PageNumberPagination 导入分页之后你要实例化分页这个对 ...

  4. Git使用本地仓库之基本操作

    1.Git是什么? 一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制系统 ①Git可以方便的在本地进行版本管理,如同你本地有一个版本管理服务器一样我们可以选择在合适的时间将本地版本 ...

  5. XtraEditors三、LookUpEdit、GridLookUpEdit、SearchLookUpEdit

    https://documentation.devexpress.com/WindowsForms/DevExpress.XtraEditors.LookUpEditBase.class 一.Look ...

  6. html5 js 游戏的一篇博客 貌似不错

    http://blog.csdn.net/lufy_legend/article/details/8888787

  7. Golang 临时对象池 sync.Pool

    Go 1.3 的sync包中加入一个新特性:Pool.官方文档可以看这里http://golang.org/pkg/sync/#Pool 这个类设计的目的是用来保存和复用临时对象,以减少内存分配,降低 ...

  8. 1692. [USACO07DEC] 队列变换【后缀数组+贪心】

    Description FJ打算带他的N(1 <= N <= 30,000)头奶牛去参加一年一度的“全美农场主大奖赛”.在这场比赛中,每个参赛者都必须让他的奶牛排成一列,然后领她们从裁判席 ...

  9. P3558 [POI2013]BAJ-Bytecomputer

    题目描述 A sequence of integers is given. The bytecomputer is a device that allows the following operati ...

  10. Dictionary<string, object>

    Dictionary<string, object> dcic = JsonHelper.DataRowFromJSON(resultdepth); foreach (var depthk ...