结构体排序,自定义比较函数bool cmp()

C++结构体 用sort排序 自己定义比较函数cmp bool cmp()

struct lzl
{
string s;
int a,b;
}x[100];
bool cmp(lzl n,lzl m)
{
if(n.a!=m.a)
return n.a>m.a;
if(n.a==m.a&&n.b!=m.b)
return n.b>m.b;
if(n.a==m.a&&n.b==m.b)
return n.s<m.s;
}
如果a不同,用a来排序,如果a相同,b不同,就用b来排序,a,b都相同就用s来排序。
我想问的是,这个语句在cmp里面怎么写啊!两个的我会写,但是3个怎么写啊?

if(n.a != m.a)
{
return n.a>m.a;
}else if(n.b != m.b)
{
return n.b > m.b
}else
{
return strcmp(n.s,m.s);
}

请问题主您的cmp什么意思?
另外,您说的用a、b或者s来排序,准确意思是不是您定义了两个排序函数和一个函数指针数组?

如果是三个的那就弄个临时变量来记录

cmp是比较函数 它永远只比较两个 但是你可以用list来进行sort

if(n.a != m.a)
{
return n.a>m.a;
}else if(n.b != m.b)
{
return n.b > m.b
}else
{
return strcmp(n.s,m.s);
}
cmp是比较函数 它永远只比较两个 但是你可以用list来进行sort

if(n.a != m.a)
{
return n.a>m.a;
}else if(n.b != m.b)
{
return n.b > m.b
}else
{
return strcmp(n.s,m.s);
}
cmp是比较函数 它永远只比较两个 但是你可以用list来进行sort