template<typename T> void bubble(T a[],int n) { int i,j,t,temp; for(i=n-1;i>=1;i--) { t=n-i; for(j=t;j>=1;j--) if(a[j]>a[j-1]) {temp=a[j];a[j]=a[j-1];a[j-1]=temp;} } }
写对了
[此贴子已经被作者于2004-11-06 17:42:28编辑过]
利用函数直接把那段代码直接放入函数里面,然后申明返回值。不就可以了吗?
有点把我弄糊涂了。
呵呵,我没看清楚题目,以为是要适用于两种情况,那这道题我已经完成了.多谢版主了.
顺便提一下,我在运行这个程序前,对于输出数组元素并不是用循环,
for(i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl;
而是直接用:cout<<a<<endl;但这样不能正确输出,输出一些不知道的东西,请问版主这是怎么一回事.
恩,刚调试了一下,个人认为认为cout<<没有关于具体模板的重载,因为cout<<a<<endl;在普通里面是利用cout<<的关于具体类型数组的重载,而这里数组的类型是最后才确定,于是用不了重载的,就惟有输出地址了。
我想应该是和版主说的一样,那多谢了,不过我要再好好研究一下,我才刚学到吗