函数模板
2016-07-03 16:36
477 查看
问题:
模板,template:定义一个模子,自动适应各个类型。
语法:
定义一个函数模板
算法相同
元素类型不同,用T代替
使用时,用<>来具体指定typename的类型
在使用时函数名为findmax ,表示把int类型带入模板。
在C/C++里,空白是不影响最终编译结果的,以下两个风格结果是一样
第一种:
第二种:
分一行和分两行结果是一样的
template<>里面可以传给多个参数
使用函数模板的好处:相同的算法就不用重复的写多遍,简化了代码
函数模板用于实现通用的算法generic algrithm。也称泛型算法。
通常,我们更多的是调用人家写好的函数模板,很少自己去写一个模板
注意:
1. 区分“模板参数”与“函数参数”
模板参数
通常是一个类型的名字,如int,double,Object,Student
模板的语法检查
模板在代入时才能真正地检查语法是否正确。(操作符重载。。。)
模板通常定义在头文件里
模板参数可以多个
在一个double型数组中,查找最大的数
在一个float型数组中,查找最大的数
在一个Object[]数组中,查找最大的元素
算法一样:遍历数组,找出最大值,只是元素的类型不一样。
如果每一种类型都重载一个findmax函数,显得太笨拙。
int findmax(int arr[],int len) { int val=arr[0]; for(int i=1;i<len;i++) { if(arr[i]>val) val=arr[i]; } return val; }
模板,template:定义一个模子,自动适应各个类型。
语法:
定义一个函数模板
template<typename T> T findmax(T arr[],int len) { T val=arr[0]; }
算法相同
元素类型不同,用T代替
使用时,用<>来具体指定typename的类型
int main() { int arr[4]={1,42,87,100}; int result=findmax <int>(arr,4); return 0; }
在使用时函数名为findmax ,表示把int类型带入模板。
在C/C++里,空白是不影响最终编译结果的,以下两个风格结果是一样
第一种:
template<typename T> T findmax(T arr[],int len) { }
第二种:
template<typename T>T findmax(T arr[],int len) { }
分一行和分两行结果是一样的
template<>里面可以传给多个参数
使用函数模板的好处:相同的算法就不用重复的写多遍,简化了代码
函数模板用于实现通用的算法generic algrithm。也称泛型算法。
通常,我们更多的是调用人家写好的函数模板,很少自己去写一个模板
注意:
1. 区分“模板参数”与“函数参数”
模板参数
template<typename _T1,typename _T2>
通常是一个类型的名字,如int,double,Object,Student
模板的语法检查
模板在代入时才能真正地检查语法是否正确。(操作符重载。。。)
模板通常定义在头文件里
模板参数可以多个
相关文章推荐
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- 关于C#中排序函数的总结
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua实现split函数
- Lua常用时间函数使用实例
- Lua函数与字符串处理简明总结
- Lua学习笔记之表和函数
- Lua中实现sleep函数功能的4种方法
- Lua函数用法研究
- Lua基础教程之赋值语句、表达式、流程控制、函数学习笔记
- Sql Server中REPLACE函数的使用