主题:函数模板问题
编译没有错误但是运行结果不对
问题在我标红色的地方
不知道怎么改
//用冒泡排序法编写一个从小到大排序的函数模板,要求可以用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=FF0000]这个排序模板可以用于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=FF0000]想让这个模板特例对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);
}
问题在我标红色的地方
不知道怎么改
//用冒泡排序法编写一个从小到大排序的函数模板,要求可以用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=FF0000]这个排序模板可以用于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=FF0000]想让这个模板特例对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);
}