C++模板函数又出错了

消逝的大白菜 2012-03-19 09:19:48
下面这个程序是用来直接插入排序的,程序明明是对的,为什么执行显示不出来啊?是不是我的编译器出问题了呢?
#include<iostream.h>
template <class T>
class Sort
{
T *m;
int num;
public:
Sort(T *p,int n)
{
m=p;
num=n;
}
void do_sort()
{
T *p=new T(num);
int j=0,temp;
while(j!=num)
{
p[j]=m[j];
j++;
}
int s=num;

num=1;
for(int i=1;i<s;i++)
{ j=0;
while(p[i]>m[j]&&j<num)
{
j++;
}
temp=num;
while(temp>j)
{
m[temp]=m[temp-1];
temp--;
}
m[j]=p[i];
num++;
}

}
void disp()
{
cout<<"adfaasdf";
for(int i=0;i<num;i++)
cout<<this->m[i]<<" ";
}
};

void main()
{
int a[]={45,3,56,78,9,989,47};
Sort <int>A(a,sizeof(a)/sizeof(a[0]));
A.do_sort();
A.disp();
}
...全文
87 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
消逝的大白菜 2012-03-20
  • 打赏
  • 举报
回复
哦,我最后改的程序是这样的:
#include<iostream.h>
template <class T>
class Sort
{
T *m;
int num;
public:
Sort(T *p,int n)
{
m=p;
num=n;
}
void do_sort()
{
T *p=new T(num);
int j=0,temp;
while(j!=num)
{
p[j]=m[j];
j++;
}
int s=num;

num=1;
for(int i=1;i<s;i++)
{ j=0;
while(p[i]>m[j]&&j<num)
{
j++;
}
temp=num;
while(temp>j)
{
m[temp]=m[temp-1];
temp--;
}
m[j]=p[i];
num++;
}

}
void disp()
{
for(int i=0;i<num;i++)
cout<<this->m[i]<<" ";
}
};

void main()
{
int a[]={45,3,56,78,9,989,47};
cout<<"加入这个输出才可以!这是为什么?"<<endl;//把这个输出去掉就输不出结果!
Sort <int>A(a,sizeof(a)/sizeof(a[0]));
A.do_sort();
A.disp();
cout<<endl;
}
pengzhixi 2012-03-20
  • 打赏
  • 举报
回复
加个system("pause");吧
消逝的大白菜 2012-03-20
  • 打赏
  • 举报
回复
排序米错啊!我逐步执行了的!最后的数组的排序是正确的,但是输不出结果!
W170532934 2012-03-19
  • 打赏
  • 举报
回复
你的排序明明是错的,

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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