比较两个参数的函数模板。。。(包括字符串)

jianhuili 2010-05-26 08:59:09
怎么写。。。。那位高手教下
...全文
199 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2010-06-03
  • 打赏
  • 举报
回复
如果是其他类型的指针的话,你还是得再重载一个
template<typename T>
int comp(T*a,T*b){
if(*a>*b)return 1;
if(*a==*b)return 0;
else return -1;
}
jianhuili 2010-06-03
  • 打赏
  • 举报
回复
上面写错了
例如
main()
{int a(10),b(20);
cout<<abs(a,b);
}
结果是20.在调用时,T就被指定为int
jianhuili 2010-06-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jianhuili 的回复:]
我的意思不是那个;
例如:
[/Quote]
template<class T>
T abs(T x,T y)
{if(x>y)return x;
else return y;
}
像这样的,但是字符串就不行;
怎么用到指针ne
pengzhixi 2010-06-03
  • 打赏
  • 举报
回复

#include<iostream>
#include<cstring>
using namespace std;

template<class T> int comp(T v1, T v2)
{
if(v1 > v2)
return 1;
if(v1 == v2)
return 0;

return -1;
}

template<>int comp<char*>(char*x,char*y){
if(!strcmp(x,y)) return 0;
else if(strcmp(x,y)>0)return 1;
else return -1;
}

int main()
{
char ch[]="abc";
char st[]="abcde";
cout<<comp(ch,st)<<endl;
system("pause");
return 0;
}
dukelee 2010-06-03
  • 打赏
  • 举报
回复
模板参数类型T,这个类型没定义比较操作你怎么比较?
jianhuili 2010-06-03
  • 打赏
  • 举报
回复
哦,有点深奥,不懂,还请教下,老师说用一个模板,不要在用到函数重载
pengzhixi 2010-06-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jianhuili 的回复:]
我的意思不是那个;
例如:
template<class T>
T abs(T x,T y)
{if(x>y)return x;
else return y;
}
像这样的,但是字符串就不行;
怎么用到指针
[/Quote]
针对字符串你必须特化,或者重载一个普通的函数
jianhuili 2010-06-03
  • 打赏
  • 举报
回复
我的意思不是那个;
例如:
template<class T>
T abs(T x,T y)
{if(x>y)return x;
else return y;
}
像这样的,但是字符串就不行;
怎么用到指针
hoya5121 2010-05-26
  • 打赏
  • 举报
回复
template<class T> int compare(T v1, T v2)
{
if(v1 > v2)
return 1;
if(v1 == v2)
return 0;

return -1;
}

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧