typedef struct subscribeitem
{
   char *cig_code;
   char *cig_name;
   int cig_quantity;  //以此作为排序
}*Subitem;
list <Subitem> ::iterator iter;
list <Subitem> m_plist;
Subitem item1;
item1 = new subscribeitem;
item1->cig_code="123456";
item1->cig_name="huanghelou";
item1->cig_quantity=10;
m_plist.push_back(item1);Subitem item2;
item2 = new subscribeitem;
item2->cig_code="123457";
item2->cig_name="longjinglong";
item2->cig_quantity=30;
m_plist.push_back(item2);Subitem item3;
item3 = new subscribeitem;
item3->cig_code="123458";
item3->cig_name="zhongmei";
item3->cig_quantity=20;
m_plist.push_back(item3);
m_plist.sort();
我想实现以结构中成员变量cig_quantity进行排序,如何实现

解决方案 »

  1.   

    http://blog.csdn.net/laiyiling/archive/2006/07/03/868823.aspx
    参考其中的字体排序
      

  2.   

    这个sort回调函数总是报错,能否贴出代码来看看!
      

  3.   

    重载 > 运算符bool operator > (const Subitem a1,const Subitem b1)
    {
    return a1->cig_quantity>b1->cig_quantity;
    }m_plist.sort(greater<Subitem>());
      

  4.   

    typedef struct subscribeitem
    {
       char *cig_code;
       char *cig_name;
       int cig_quantity;  //以此作为排序
    public:
    bool operator > (const subscribeitem& b1) const
    {
    return cig_quantity>b1.cig_quantity;
    }
    }Subitem;void main()
    {
    list <Subitem> ::iterator iter;
    list <Subitem> m_plist;
    Subitem item1;
    //item1 = new subscribeitem;
    item1.cig_code="123456";
    item1.cig_name="huanghelou";
    item1.cig_quantity=10;
    m_plist.push_back(item1); Subitem item2;
    //item2 = new subscribeitem;
    item2.cig_code="123457";
    item2.cig_name="longjinglong";
    item2.cig_quantity=30;
    m_plist.push_back(item2); Subitem item3;
    //item3 = new subscribeitem;
    item3.cig_code="123458";
    item3.cig_name="zhongmei";
    item3.cig_quantity=20;
    m_plist.push_back(item3); m_plist.sort(greater<Subitem>());//
    for(iter=m_plist.begin();iter!=m_plist.end();iter++)
    printf("%d\n",iter->cig_quantity);
    getchar();
    }如果结构体不用指针,则成功.
    但用指针,则不行,比较好象是指针之间的比较