关于c++排序的问题,请看看下面的程序哪里有错,问什么用c++6.0时通过不了

#include<iostream>
#include<string>
usingnamespace std;
template <typename T,intsize>class Orderedlist{
int maxsize;
int last;
Tslist[size];
public:
Orderedlist(){last=-1;maxsize=size;}
void BubbleSort();
bool Insert(T & elem,inti);
void print();
// 无关成员函数省略,缺省的=等不必定义
};//再次指出分号不可少
//Insert(T & elem,int i)和print()不再重复定义
template <typename T,int
size> void
Orderedlist<T,size>::BubbleSort(){//降序 bool noswap;
int i,j;
Ttemp;
for (i=last;i>0;i--){//从上往下冒泡,对比例6.8有何不同?
noswap=true; //未交换标志为真
for(j=0;j<i;j++){
if(slist[j]<slist[j+1]){//关键字比较只用小于号!
temp=slist[j];
slist[j]=slist[j+1];
slist[j+1]=temp;
noswap=false;
}
}
if(noswap) break; //本趟无交换,则终止算法。
}
}
int main(){
constint h=8;
int i;
Orderedlist<string,100>ordlist;
stringn[h];
stringsp[h]={"南京大学","东南大学","交通大学","清华大学",
"天津大学","复旦大学","浙江大学","同济大学"};
for(i=0;i<h;i++) n[i]=sp[i];
for(i=0;i<h;i++) ordlist.Insert(n[i],i); //建立顺序表
cout<<"未排序表:"<<endl;
ordlist.print();
ordlist.BubbleSort();
cout<<"已排序表:"<<endl;
ordlist.print();
return 0;
}

VC++编译器没有安装好,重装一个完整的。很明显Link.exe连接器出现问题。这个应该和你的程序代码没有太大关系。最好用管理员方式运行VC++6
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-05-08
未排序表:
南京大学
东南大学
交通大学
清华大学
天津大学
复旦大学
浙江大学
同济大学
已排序表:
清华大学
浙江大学
天津大学
复旦大学
同济大学
南京大学
交通大学
东南大学
运行 FINISHED; 退出值0; 实时: 0ms; 用户: 0ms; 系统: 0ms
///////////////////////////////////////////////////////////////////////////////////////////

#include<iostream>
#include<string>
using namespace std;
template <typename T,int size>
class Orderedlist{
int maxsize;
int last;
T slist[size];
public:
Orderedlist(){last=-1;maxsize=size;}
void BubbleSort();
bool Insert(T & elem,int i);
void print();
// 无关成员函数省略,缺省的=等不必定义
};//再次指出分号不可少
//Insert(T & elem,int i)和print()不再重复定义
template <typename T,int size>
void Orderedlist<T,size>::BubbleSort(){//降序
bool noswap;
int i,j;
T temp;
for (i=last;i>0;i--){//从上往下冒泡,对比例6.8有何不同?
noswap=true; //未交换标志为真
for(j=0;j<i;j++){
if(slist[j]<slist[j+1]){//关键字比较只用小于号!
temp=slist[j];
slist[j]=slist[j+1];
slist[j+1]=temp;
noswap=false;
}
}
if(noswap) break; //本趟无交换,则终止算法。
}
}
template<typename T,int size>
bool Orderedlist<T,size>:: Insert(T & elem,int i)
{
last++;
if(last<maxsize)
{
slist[i]=elem;
return true;
}
else return false;
}
template<typename T,int size>
void Orderedlist<T,size>::print()
{
for(int i=0;i<=last;i++)
cout<<slist[i]<<endl;
}
int main(){
const int h=8;
int i;
Orderedlist<string,100>ordlist;
string n[h];
string sp[h]={"南京大学","东南大学","交通大学","清华大学",
"天津大学","复旦大学","浙江大学","同济大学"};
for(i=0;i<h;i++) n[i]=sp[i];
for(i=0;i<h;i++) ordlist.Insert(n[i],i); //建立顺序表
cout<<"未排序表:"<<endl;
ordlist.print();
ordlist.BubbleSort();
cout<<"已排序表:"<<endl;
ordlist.print();
return 0;
}本回答被提问者采纳
第2个回答  2013-03-30
你没有引入STL的模板库。追问

什么意思,该怎么解决这个问题

追答

编写模板类时 类的实现和类的说明要在同一个文件中,拷贝过去编译。

相似回答