如下程序,请问一下,怎样用模板对字符串惊醒排序?
#include<iostream>
#include<string>
using namespace std;
template <typename T>
T sort(T x[],int m){ //排序函数
int i,j,k;
T t;
for(i=0;i< m-1;i++)
{ k=i;
for(j=i+1;j< m;j++)
if(x[j]< x[k])
k=j;
if(k!=i)
{ t=x[i];x[i]=x[k];x[k]=t;}}return x[j];}
char sort(char x[],int m){ //字符排序重载
int i,j,k;
char t;
for(i=0;i< m-1;i++)
{ k=i;
for(j=i+1;j< m;j++)
if(x[j]< x[k])
k=j;
if(k!=i)
{ t=x[i];x[i]=x[k];x[k]=t;}}return x[j];}
//字符串数组的排序参考如下:
void sort(char str[20][20], int n) {
char a[20];
int i, j;
for (i = 0; i < n-1; i++) {
for (j = i ; j < n-1; j++)
if (strcmp(str[j], str[j + 1]) > 0) {
strcpy(a, str[j]);
strcpy(str[j], str[j + 1]);
strcpy(str[j+1], a);}return str[j];}
int main()
{
int a[]={19,25,56,45,15};
const int m=sizeof(a) / sizeof(*a);
sort(a,m);
for(int i=0;i<m;i++)
{cout<<a[i]<<"\t";}
cout<<"\n";
double b[]={1.0,5.2,4.3,6.2,2.5};
const int n=sizeof(b) / sizeof(*b);
sort(b,n);
for(int j=0;j<n;j++)
{cout<<b[j]<<"\t";}
cout<<"\n";
char c[]={'a','b','y','u','r'};
const int p=sizeof(c) / sizeof(*c);
sort(c,p);
for(int k=0;k<p;k++)
{cout<<c[k]<<"\t";}
cout<<"\n";
char s[][]={"hsdfkjf","dhfjsdfs"}
const int q=sizeof(s) / sizeof(*s);
sort(s[][],q);
for(int d=0;d<q;d++)
{cout<<s[j][j+1]<<"\t";}
cout<<"\n";
return 0;
}
额 那个主函数中的字符数组是我写的,有问题,好像!
ä¸å ¶å®æåºç±»ä¼¼ï¼å符æ°ç»æåºä¹æ¯æ ¹æ®ä¸å®ç®æ³ï¼å¦å泡æ³ï¼å°å个项å¼è¿è¡æ¯è¾ï¼å¹¶éè¿èµå¼äº¤æ¢ä½ç½®å³å¯ã
对äºå符æ°ç»ï¼èµå¼åæ¯è¾åä¸ä¸è¬å¯¹è±¡æåéä¸åã
1 å符æ°ç»æ¯è¾ï¼
éè¦è°ç¨strcmpå½æ°ã
int strcmp(char *s1, char *s2);
æç §asciiç æ¯è¾ï¼å½s1ås2ç¸çæ¶è¿å0ï¼å¦æs1大åè¿å1ï¼å¦åè¿å-1ã
2 å符æ°ç»èµå¼ã
éè¦è°ç¨strcpyå½æ°ã
char *strcpy(char *dst, char *src);
å°srcä¸çå符串å¤å¶å°dstä¸ã
注æï¼è¦ä½¿ç¨ä»¥ä¸ä¸¤ä¸ªå½æ°ï¼éè¦å¼ç¨å¤´æ件cstringã
以ä¸æ¯ä¸ä¸ªæåºçåè代ç ï¼
#include <cstring>真是麻烦你们了,多谢!
追答不客气
本回答被提问者采纳但还是有问题,对字符串数组排序还是出现错误could not deduce template argument for '' from 'void',问一下,怎样解决?
追答我编译通过了啊而且运行没问题啊!你是编译错误还是运行时错误,哪一行的问题啊?
追问void sort(char str[20][20], int n) {
这行出问题了
could not deduce template argument for '' from 'void',问一下,怎样解决?
str[20][20]改为str[][20]即可。
追问还是不行啊,
麻烦了,多谢!
void sort(char str[20][20], int n) {
这行出问题了
我用vc++6.0,运行一直出错!
追答我是因为字数太多,黏贴不上,这些知识部分代码,其他的地方不用改,我运行过了。