问题描述
- 结构体排序,自定义比较函数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