回 帖 发 新 帖 刷新版面

主题:求教,关于函数模板

#include <iostream>
using namespace std;

template <typename T>
T min(T *p, int n)
{    
    T k=0; 
    for(int i=1;i<=n;i++)
    {
            if(*(p+k)>(*(p+i)))
                k=i;
    }
    return *(p+k);
}

int main()
{
    int a[5]={6,23,5,8,2};
    double b[]={2.21,324.2,656.3,65,1.3};

    cout<<"min:"<<endl<<min(a,5)<<endl;
    cout<<"min:"<<endl<<min(b,5)<<endl;

    return 0;

}

为什么 编译通不过??

回复列表 (共1个回复)

沙发

#include <iostream>
using namespace std;

template <typename T>
T min(T *p, int n)
{    
    int k=0; 
    for(int i=1;i<=n;i++)
    {
            if(*(p+k)>*(p+i))
                k=i;
    }
    return *(p+k);
}

int main()
{
    int a[5]={6,23,5,8,2};
    double b[]={2.21,324.2,656.3,65,1.3};

    cout<<"min:"<<endl<<min(a,5)<<endl;
    cout<<"min:"<<endl<<min(b,5)<<endl;

    return 0;

}

改成这个样子可以通过了,但是为什么传DOUBLE 的时候结果不对???

我来回复

您尚未登录,请登录后再回复。点此登录或注册