STL的常用算法函數之sort

所有要使用STL模板庫算法的程序都要包含頭文件 #include<algorithm>

1、sort()函數

sort函數總結

1、支持隨機存取迭代器的(連續存儲空間)vector、deque(雙向存取vector)使用STL的sort函數。
2、不支持隨機存取迭代器的(鏈式非連續存儲空間)list(雙向鏈表)、slist(單向鏈表forward_list),不能使用STL的sort函數,因此都會在類中定義sort()成員函數,使用對象名調用即可。
3、關系型容器中基于紅黑樹的set、multiset、map、multimap,本身就有自動從大到小排序的功能。所以不需要sort函數。
4、stack、queue沒有迭代器,各元素的出入口特定,不能進行排序。
5、基于哈希表的(hash)unordered_set/multiset/map/multimap,都是未排序的,當然因為計算hash再存儲的特性,也不需要進行排序。

sort的第一種版本,只帶兩個迭代器作為參數

image.png

這種只有兩個參數的sort版本,默認是以基本數據類型的<為true。因此在類中重載<操作符返回bool型,就可以使用類中的某個基本類型的成員變量的大小來排序。

image.png

image.png

image.png
image.png

sort的第二種版本,以函數指針或仿函數作為第三個參數用于大小比較

image.png

image.png

image.png

image.png

以函數指針形式作為第三參數

參見大疆筆試題http://www.lxweimin.com/p/00852ade791f
將自定義的comp函數作為sort函數的第三個參數。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容