怎么对结构体使用stl中的排序函数?急!
定义一个结构:职工号(no)、姓名(name)、部门号(depno)、工资数(salary)、职工号指针(pno)、部门号指针(pdepno)和工资数指针(psalary)。后面的三个指针最好定义在联合体中,而且定义的结构还能使用stl中的list< >。
程序代码:
#include <iostream> #include <string> #include <list> using namespace std; typedef struct ZhiGong { char no[15]; char name[5]; char depno[15]; int salary; ZhiGong *next; union { ZhiGong *pno; ZhiGong *pdeno; ZhiGong *psalary; }Zhizhen; }zhig; void shuru();//录入新员工信息 void shuchuall();//输出所有员工信息 void pailieno();//按职工号排序 void shuchuno();//按职工号全部输出 void pailiedepno();//按部门号排序 void shuchudepno();//按部门号全部输出 void pailiesalary();//按工资排序 void shuchusalary();//按工资全部输出 void clearall();//全部清除 void baocuntuichu();//保存并退出 void init(zhig *s) { s->next=NULL; } void shuru(zhig *s) { zhig *p; p=new zhig; cout<<"请输入职工号:"; cin>>p->no; cout<<endl<<"请输入名字:"; cin>>p->name; cout<<endl<<"请输入部门号:"; cin>>p->depno; cout<<endl<<"请输入工资:"; cin>>p->salary; p->next=s->next; s->next=p; } void shuchuall(zhig *s) { zhig *q; q=s->next; while(q!=NULL) { cout<<"职工号:"<<q->no<<endl; cout<<"姓名:"<<q->name<<endl; cout<<"部门号:"<<q->depno<<endl; cout<<"工资:"<<q->salary<<endl; q=q->next; } cout<<endl; } void pailieno(zhig *s) { /*zhig *p,*r; r=s; p=s->next; while(r->next!=NULL){ while(p->next!=NULL) { if(strcmp(r->next->no,p->next->no)) { // } p=p->next; } r=r->next; }*/ list<zhig> l(s);//在排序不分我想用stl中的函数,但不知道怎么用求教 l.sort(); } int main() { zhig *s; s=new zhig; init(s); cout<<"**************************************\n"; cout<<" 职工信息表\n"; cout<<"**************************************\n"; cout<<" 请输入相应的数字进行操作(0-9)\n"; cout<<" 1: 添加一个职工记录\n"; cout<<" 2: 输出全部职工记录\n"; cout<<" 3: 按职工号排序\n"; cout<<" 4: 按职工号全部输出\n"; cout<<" 5: 按部门号排序\n"; cout<<" 6: 按部门号全部输出\n"; cout<<" 7: 按工资排序\n"; cout<<" 8: 按工资全部输出\n"; cout<<" 9: 全部清除\n"; cout<<" 0: 保存并退出\n"; cout<<"**************************************\n"; int m=10; while(m) { cout<<"请输入0-9的数字:"; cin>>m; switch(m) { case 1:shuru(s);break; case 2:shuchuall(s);break; /*case 3:pailieno();break; case 4:shuchuno();break; case 5:pailiedepno();break; case 6:shuchudepno();break; case 7:pailiesalary();break; case 8:shuchusalary();break; case 9:clearall();break; case 0:baocuntuichu();break;*/ } } return 0; }在排序部份我想用stl中的排序函数(sort)进行排序,但不知道怎么用求教.急!