qq_33070397
qq_33070397
采纳率62.5%
2015-11-26 10:31 阅读 7.4k

结构体排序,自定义比较函数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个怎么写啊?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

6条回答 默认 最新

  • 已采纳
    q3733353520 我用双手-成就你的梦想 2015-11-27 03:17

    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);
    }

    点赞 1 评论 复制链接分享
  • John_ToString John_ToString 2015-12-04 02:13

    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

    点赞 2 评论 复制链接分享
  • wenpinglaoyao 纹枰老妖 2015-11-26 11:06

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

    点赞 1 评论 复制链接分享
  • paopaoTT 水的只能学 2015-11-26 13:34

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

    点赞 1 评论 复制链接分享
  • oyljerry oyljerry 2015-11-26 14:26

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

    点赞 1 评论 复制链接分享
  • John_ToString John_ToString 2015-12-04 02:12

    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

    点赞 1 评论 复制链接分享

相关推荐