函数模板中模板中第二个参数 如果没有给明确的类型,为什么错误?附有代码
#include<iostream>usingnamespacestd;template<classT>Tmin(constT*arr,unsignedTlen)//问题...
#include<iostream>
using namespace std;
template <class T>
T min(const T* arr, unsigned T len)//问题出在这里的len 前面的类型没有被具体定义 ,解释一下
{
unsigned int tmp = 0;
for (unsigned int i = 0; i<len; ++i)
if (arr[i]<arr[tmp])
tmp = i;
return arr[tmp];
}
int main()
{
int i_a[5] = { 67, 83, 96, 79, 105 };
double d_a[6] = { 1.7, 0.3, 5.6, 9.7, 5.5, 8.8 };
cout << "min(i_a,5)=" << min(i_a, 5) << endl;
cout << "min(d_a,6)=" << min(d_a, 6) << endl;
while (1);
return 0;
}
还有一个问题就是如果第二个参数不给明确的类型,只要调用的时候使第一个参数的类型与第二个参数一致了,就匹配成功,且通过编译了。如下
例:T min(const T *ar , T len);
调用 min(a,2);(a是数组名) 展开
using namespace std;
template <class T>
T min(const T* arr, unsigned T len)//问题出在这里的len 前面的类型没有被具体定义 ,解释一下
{
unsigned int tmp = 0;
for (unsigned int i = 0; i<len; ++i)
if (arr[i]<arr[tmp])
tmp = i;
return arr[tmp];
}
int main()
{
int i_a[5] = { 67, 83, 96, 79, 105 };
double d_a[6] = { 1.7, 0.3, 5.6, 9.7, 5.5, 8.8 };
cout << "min(i_a,5)=" << min(i_a, 5) << endl;
cout << "min(d_a,6)=" << min(d_a, 6) << endl;
while (1);
return 0;
}
还有一个问题就是如果第二个参数不给明确的类型,只要调用的时候使第一个参数的类型与第二个参数一致了,就匹配成功,且通过编译了。如下
例:T min(const T *ar , T len);
调用 min(a,2);(a是数组名) 展开
1个回答
博思aippt
2024-07-20 广告
2024-07-20 广告
作为深圳市博思云创科技有限公司的工作人员,对于Word文档生成PPT的操作,我们有以下建议:1. 使用另存为功能:在Word中编辑完文档后,点击文件->另存为,选择PowerPoint演示文稿(*.pptx)格式,即可将文档内容转换为PPT...
点击进入详情页
本回答由博思aippt提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询