STL中的list容器貌似不支持标准的sort方法,貌似只有能够提供随机访问的容器(例如vector)才支持stl各种快速排序算法,为此,编写stl的天才们:)为list自身内部实现了sort的方法,并提供sort接口.
如果你用list来储存类结构的话,可以为你的类重载<(小于)运算符,那样的话你可以用类似以下方便的方法来为你的链表排序:
list<MyClass> mylist;
mylist.sort();
当然,大多数情况我都更常用list来储存类指针,除非你能确保你创建完链表后不改变链表节点的内容(list会创建并复制需要加入链表的类到一个新的类,对之前类的内容的任何修改在加入链表后将不会自动更新到链表节点中),...那样的话可以用像以下的方法来实现排序:
list<MyClass*> mylist;
struct MyListSort : public binary_function <MyClass *, MyClass *, bool>
{
bool operator()(MyClass* _Left, MyClass* _Right) const
{
if(_Left->size > _Right->size)
return true;
return false;
}
};
//....
MyListSort mls;
mylist.sort(mls);
//...