注册 登录
编程论坛 C++教室

用函数模板实现一个程序,求大神帮忙

qweiuy566 发布于 2016-03-16 19:00, 2473 次点击
#include<iostream>
#include<string>
using namespace std;
template<class T>
void sort(T a[]);  
int main()
{
    int a[5]={1,5,4,3,6};
    float b[5]={1.0,3.0,2.5,3.8,5.2};
    string c[5]={"string1","string12","string123","string1234","string12345"};
    sort(a);
    sort(b);
    sort(c);
    return 0;
}
void sort(T a[])  //编译的时候这里出现了问题,不知道应该怎么改
{
    T temp;
    int i,j,n;
    for(i=0;i<5;i++)
    for(j=0;j<5;j++)
    if(a[i]>a[j])
    {
        temp=a[i];
        a[i]=a[j];
        a[j]=temp;
    }
    for(i=0;i<5;i++)
    cout<<a[i]<<" ";
    cout<<endl;
}
3 回复
#2
wengbin2016-03-16 21:57
程序代码:
#include<iostream>
#include<string>
using namespace std;
template<class T>
void sort(T a[]);//源码这里;是汉字字符,不可用
int main()
{
    int a[5]={1,5,4,3,6};
    float b[5]={1.0,3.0,2.5,3.8,5.2};
    string c[5]={"string1","string12","string123","string1234","string12345"};
    sort(a);
    sort(b);
    sort(c);
    return 0;
}
template<class T>//不知道没加这一行楼主是怎么通过编译的,反正我这报错了
void sort(T a[])  //编译的时候这里出现了问题,不知道应该怎么改
{
    T temp;
    int i,j,n;
    for(i=0;i<5;i++)
    for(j=i+1;j<5;j++)//j从i+1开始比
    if(a[i]>a[j])
    {
        temp=a[i];
        a[i]=a[j];
        a[j]=temp;
    }
    for(i=0;i<5;i++)
    cout<<a[i]<<" ";
    cout<<endl;
}
#3
qweiuy5662016-03-18 12:54
回复 2楼 wengbin
谢谢
#4
aiyulunhui2016-03-18 15:31
排序函数形参要加&吧
1