[C++] 自定義C++比較器比較大小
1.容器分類
程式設計過程中,我們經常有這樣的需求,
- 改變容器預設的排序,或者
- 讓排序函式
sort
按照自定義的方式進行排序。
STL的容器主要有:
- 線性容器,vector, list, queue, deque, priority_queue
- 對映容器,set, unordered_set, map, unordered_map
其中有排序需求的是vector,priority_queue, set, map, 對於vector我們經常用sort函式進行排序,對於priority_queue, set, map內部會按照自定義的比較器在插入新值時自動排序。
2.自定義比較器
下面我們分析兩種自定義順序:
2.1 vector
我們既可以用比較函式來定義比較器,也可以用lamda表示式在定義比較器。
bool cmp1(int a, int b) {
return a > b;
}
auto cmp2 = [](int a, int b) {
return a > b;
};
...
sort(v.begin(), v.end(), cmp1);
sort(v.begin(), v.end(), cmp2);
2.2 priority_queue
priority_queue預設是大頂堆,我們可以採取兩種方式自定義堆,即lamba表示式和過載()運算子,對pq的lamba表示式寫法可參考這裡。
auto cmp2 = [](int a, int b) {
return a > b;
};
priority_queue<int, vector<int>, decltype(cmp2)> pq(cmp2);
struct cmp {
bool operator()(int a, int b) {
return a > b;
}
};
priority_queue<int, vector<int>, cmp> pq;
——————————
https://blog.csdn.net/AAMahone/article/details/82787184
相關文章
- C++ - 比較兩個浮點數大小C++
- Go 與 C++ 的對比和比較GoC++
- python字串比較大小Python字串
- java比較日期大小Java
- JAVA中的Comparable介面和自定義比較器Java
- C++宏和函式的比較C++函式
- c++ map和unordered_map比較C++
- c/c++ 標準庫 set 自定義關鍵字型別與比較函式C++型別函式
- Java的BigDecimal比較大小JavaDecimal
- C++與Rust變數宣告的比較C++Rust變數
- 【教程】一個比較良心的C++程式碼混淆器C++
- Python 中 sorted 如何自定義比較邏輯Python
- L1-010 比較大小
- 版本號比較大小問題
- 關於c、c++之前比較模糊的概念C++
- C++與Rust操作裸指標的比較C++Rust指標
- C++與Rust引用外部符號的比較C++Rust符號
- Java 比較器Java
- cmp是可選的自定義比較函式函式
- (轉貼) C++,C#,Java功能比較 (.NET) (C#) (C/C++)C++C#Java
- C++ priority_queue為例的比較函式C++函式
- 數學趣題:比較大小(二)
- DateTime.Compare()比較時間大小
- js 深比較和淺比較JS
- C與C++在函式和資料的比較C++函式
- js精確比較浮點數大小JS
- 比較器-Comparable和Comparator
- Oracle date 型別比較和String比較Oracle型別
- 比較集合
- Integer比較
- 效能比較
- 字串比較字串
- 字串大小寫轉換和字串的比較字串
- ES5 / ES6 自定義錯誤型別比較型別
- Struggle Compare for mac(文字比較器)Mac
- 比較檔案是否相同,(比較MD5值)
- Go和Python比較的話,哪個比較好?GoPython
- UFDoble型別計算、比較大小。BigDecimal轉UFDouble型別Decimal