链表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<NewTreeElem> listSocialInf
链表排序:
//对邻居按照社会影响由大到小排序
listSocialInf.sort(CompInfo);