[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
相關文章
- Go 與 C++ 的對比和比較GoC++
- C++引用與指標的比較C++指標
- java比較日期大小Java
- Delphi中字串比較大小 VS Oracle-SQL中字串比較大小字串OracleSQL
- c++ map和unordered_map比較C++
- 【C/C++】計時函式比較C++函式
- c/c++ 標準庫 set 自定義關鍵字型別與比較函式C++型別函式
- JAVA中的Comparable介面和自定義比較器Java
- python字串比較大小Python字串
- JavaScript字串如何比較大小JavaScript字串
- JavaScript 比較時間大小JavaScript
- 【教程】一個比較良心的C++程式碼混淆器C++
- C++與Rust操作裸指標的比較C++Rust指標
- C++與Rust變數宣告的比較C++Rust變數
- Java 比較器Java
- 版本號比較大小問題
- Java的BigDecimal比較大小JavaDecimal
- JavaScript比較時間日期大小JavaScript
- 關於c、c++之前比較模糊的概念C++
- C++與Rust引用外部符號的比較C++Rust符號
- C++ 中三種正規表示式比較C++
- Java、C、C++中的陣列的比較JavaC++陣列
- Python 中 sorted 如何自定義比較邏輯Python
- cmp是可選的自定義比較函式函式
- (轉貼) C++,C#,Java功能比較 (.NET) (C#) (C/C++)C++C#Java
- JavaScript比較兩個時間大小JavaScript
- C sharp 比較時間大小C Sharp
- C++ priority_queue為例的比較函式C++函式
- js 深比較和淺比較JS
- oracle中字串的大小比較,字串與數字的比較和運算Oracle字串
- stl中各種容器的自定義比較函式函式
- C與C++在函式和資料的比較C++函式
- 16:忽略大小寫的字串比較字串
- 比較輸入兩個版本號大小
- jquery比較時間 的時分秒大小jQuery
- 瀏覽器核心比較瀏覽器
- Python解惑:整數比較 is ==的比較Python
- 字串比較字串