STL的list容器如何对结构体进行排序

链表list有自定义的sort排序函数,默认由大到小排序,但是只有能够比较大小的数值类型的内容才可以,如int,float,double等,对于结构体需要自己定义排序函数。

例如:

定义结构体:

typedef struct NewTreeElem

{

    long nNodeId; //节点id

    int nLevel; //层次

    double dSoIn; //社会影响

};

定义全局比较函数,注意必须是全局函数

////比较

boolCompInfo(NewTreeElem first, NewTreeElem second)

{

    if(first.dSoIn <= second.dSoIn) //由大到小排序 //如果想要由小到大,改为大于即可

    {

       return false;

    }

    else

    {

       return true;

    }

}

定义链表:

list listSocialInf

链表排序:

//对邻居按照社会影响由大到小排序

listSocialInf.sort(CompInfo);

你可能感兴趣的:(编程)