编程论坛's Archiver

djy5043 发表于 2008-5-5 19:31

函数模板问题

编译没有错误但是运行结果不对
问题在我标红色的地方
不知道怎么改
//用冒泡排序法编写一个从小到大排序的函数模板,要求可以用int ,double,char,string,char*等类型数据进行验证
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
template<typename U,int size>
void ebusort(U (&arr)[size])     
{
        U temp;
        for(int i=0;i<size;i++)
                for(int j=0;j<size-i;j++)
                        if(arr[j]>arr[j+1])
                        {
                                temp=arr[j];
                                arr[j]=arr[j+1];
                                arr[j+1]=temp;
                        }
        for(int i=0;i<size;i++)
                cout<<arr<<"  ";
                cout<<endl;
}                              //[color=Red]这个排序模板可以用于int,double,char排序,但是数组的最后一个值输出得不对[/color]template<typename U,int size>
void ebusort(string (&arr)[size])     
{
        string temp;
        for(int i=0;i<size;i++)
                for(int j=0;j<size-i;j++)
                        if(arr[j].compare(arr[j+1])>0)
                        {
                                temp=arr[j];
                                arr[j]=arr[j+1];
                                arr[j+1]=temp;
                        }
        for(int i=0;i<size;i++)
                cout<<arr<<"  ";
                cout<<endl;
}                              //[color=Red]想让这个模板特例对string数组排序,但是输入数据之后没有结果输出  [/color]        
template <typename U,int size>
istream& operator>>( istream & in,U(&arr)[size])   //用模板函数重载输入运算符
{
   cout<<"请分别输入int,char,string型数组:";
   for(int i=0;i<size;i++)
                cin>>arr;
   return in;
}

void main()
{
        int a[10];
        char b[10];
        string c[10];
        cin>>(a);
        cin>>(b);
        cin>>(c);
        ebusort(a);
        ebusort(b);
        ebusort(c);
}

sunkaidong 发表于 2008-5-5 21:14

里面有数组越界和string的打印错误..要转换成.c_str();

djy5043 发表于 2008-5-11 11:24


改出来了

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.