STL 中list的sort 方法使用總結

2021-08-17 03:47:44 字數 1457 閱讀 8591

1、list中資料型別為基本型別,例如為整數型別排序:

#include #include using namespace std;

int main()

return 0;

}

輸出為:

2、list中的型別為自定義型別

比方說是乙個自定義的類,那麼如果想為這個類所生成的物件排序的話,因為list.sort()預設排序需要過載 < 操作符。所以我們必須在類物件裡過載這個操作符。例子如下:

#include #include using namespace std;  

class student

student(int a)

public:

bool operator < (student b)

bool operator > (student b)

}; int main()

num.clear();

}

輸出為:

總結:事實上,list有兩個版本的sort成員函式:   

乙個是不帶引數的sort(),用來實現公升序排列;另乙個嘛,另乙個是帶引數的sort(greaterpr),用來實現降序排列。後者的greater實際上是被vc實作好的乙個二元函式(binary   funtion)物件,具體可以參見參考文件[1]

3、自定義規則進行排序

3.1 使用函式物件 (參考[2])

#include#includeusing namespace std;

class a

};struct node

};bool compare(a a1, a a2)

int main() {

listlist_a;

a a1(1,2), a2(4,6), a3(2,8);

list_a.push_back(a1);

list_a.push_back(a2);

list_a.push_back(a3);

list_a.sort(compare); //排序操作;

list::iterator ite;

ite=list_a.begin();

for(int i=0;i<3;i++) {cout

注:使用c-free中的gcc版本 :4.9.2

參考:[1] stl sort使用經驗

[2] stl中list的sort函式的自定義排序

[3] c++ 中list容器,自定義sort排序規則,stl中sort自定義排序規則

stl中list的sort演算法實現

stl中有乙個std sort演算法,但它是不支援std list的,因為list不提供randomiterator的支援,但list自己提供了sort演算法,把list的元素按從小到大的方式來排序,長度到不長,但真是難以讀懂,後來扣持了一下午終於搞明白了,貼個總結上來。list sort的 如下 ...

stl中list的sort 函式解析

list不能使用stl演算法sort 必須使用自己的sort member function,因為stl演算法sort 只接受randomaccessiterator,而list提供的是 bidirectional iterators 演算法描述 templatevoid list sort tem...

STL中關於list容器的sort函式詳解

因為在stl中stl algo中提供有sort函式,他的函式原型 template inline void sort randomaccessiterator first,randomaccessiterator last template inline void sort randomaccess...