sort 函數(shù)利用自定義比較函數(shù)實現(xiàn)定制排序:編寫比較函數(shù):指定排序規(guī)則,定義參數(shù)類型和返回值。調(diào)用 sort 函數(shù):將自定義比較函數(shù)作為第三個參數(shù),對容器中的元素進行排序。示例:按降序?qū)φ麛?shù)排序,按自定義規(guī)則對字符串排序(空字符串優(yōu)先、長度優(yōu)先、字典序優(yōu)先)。
如何在 C++ 中使用 sort 函數(shù)實現(xiàn)定制排序功能
sort
函數(shù)是 C++ 標準庫中的一個重要函數(shù),用于對容器中的元素進行排序。它以引用方式接收一個比較函數(shù),允許用戶根據(jù)自定義條件對元素進行排序。
比較函數(shù)的語法
比較函數(shù)的語法如下:
bool compare(const T1& a, const T2& b);
關注:愛掏網(wǎng)
其中:
-
T1
和T2
是要比較的元素類型。 - 返回
true
表示a
小于b
。 - 返回
false
表示a
大于或等于b
。
實現(xiàn)定制排序
要使用 sort
函數(shù)實現(xiàn)定制排序,您需要編寫一個指定排序行為的自定義比較函數(shù)。以下是一個示例:
#include <algorithm> #include <vector> using namespace std; bool compareIntsDescending(int a, int b) { return a > b; } int main() { vector<int> numbers = {1, 5, 2, 4, 3}; sort(numbers.begin(), numbers.end(), compareIntsDescending); for (auto& num : numbers) { cout << num << " "; } cout << endl; return 0; }
關注:愛掏網(wǎng)
這個程序的輸出:
5 4 3 2 1
關注:愛掏網(wǎng)
在這個例子中,compareIntsDescending
比較函數(shù)將整數(shù)從大到小進行排序。
實戰(zhàn)案例:按自定義規(guī)則對字符串排序
假設您有一個字符串數(shù)組,您希望按以下規(guī)則對其進行排序:
- 空字符串先排序。
- 較長的字符串先排序(長度相同時按字母順序排序)。
您可以編寫以下比較函數(shù)來實現(xiàn)此功能:
bool compareStrings(string a, string b) { // 檢查是否為空字符串 if (a.empty() && !b.empty()) { return true; } else if (!a.empty() && b.empty()) { return false; } // 空字符串相等 if (a.empty() && b.empty()) { return false; } // 比較長度 if (a.length() < b.length()) { return true; } else if (a.length() > b.length()) { return false; } // 長度相同時按字母順序比較 return (a < b); }
關注:愛掏網(wǎng)
然后,您可以使用此比較函數(shù)對字符串數(shù)組進行排序,如下所示:
#include <algorithm> #include <vector> using namespace std; int main() { vector<string> strings = {"apple", "banana", "cherry", "dog", "cat", ""}; sort(strings.begin(), strings.end(), compareStrings); for (auto& str : strings) { cout << str << " "; } cout << endl; return 0; }
關注:愛掏網(wǎng)
這個程序的輸出:
dog cat apple banana cherry
關注:愛掏網(wǎng)
以上就是如何正確使用C++sort函數(shù)實現(xiàn)定制排序功能的詳細內(nèi)容,更多請關注愛掏網(wǎng) - it200.com其它相關文章!
聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結果,不保證100%準確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權益,可聯(lián)系我們進行處理。