模板学习的一些疑惑

wqshmail 2011-12-14 03:57:14

#include <iostream>
using namespace std;
template <class type,int len> //定义一个模板类型
type Max(type array[len]) //定义函数模板
{
type ret = array[0]; //定义一个变量
for(int i=1; i<len; i++) //遍历数组元素
{
ret = (ret > array[i])? ret : array[i]; //比较数组元素大小
}
return ret; //返回最大值
}
void main()
{
int array[5] = {1,2,3,4,5}; //定义一个整型数组
int iret = Max<int,5>(array); //调用函数模板Max
double dset[3] = {10.5,11.2,9.8}; //定义实数数组
double dret = Max<double,3>(dset); //调用函数模板Max
cout << dret << endl;
}


问题1. class type什么意思,什么用法?
模板类型参数和非类型参数的用法和意义区别在哪里?

问题2. Max<int,5>(array)什么意思? 怎么又(),又<> ?
...全文
60 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wqshmail 2011-12-14
  • 打赏
  • 举报
回复
可以用例子说明下不,我抽象能力有的差
a81895898 2011-12-14
  • 打赏
  • 举报
回复
模板非类型形参是模板定义内部的常量值,在需要常量表达式的时候,可使用非类型形参,上面模板中用len来表示数组的长度,并在实例化的时候将其值赋为5
a81895898 2011-12-14
  • 打赏
  • 举报
回复
问题1. class type什么意思,什么用法?
模板类型参数和非类型参数的用法和意义区别在哪里?
定义了一个名为type的模板类型,模板类型在实例化的时候会根据传入的参数确定具体类型

问题2. Max<int,5>(array)什么意思? 怎么又(),又<> ?
相当于把int传给了type,<> 内的是模板参数,而()内的是函数参数

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧