sort 函數利用自訂比較函數實作客製化排序:編寫比較函數:指定排序規則,定義參數類型和傳回值。呼叫 sort 函數:將自訂比較函數作為第三個參數,對容器中的元素進行排序。範例:依降序對整數排序,依自訂規則對字串排序(空字串優先、長度優先、字典序優先)。
如何在C 中使用sort 函數實作客製化排序功能
#sort
函數是C 標準函式庫中的一個重要函數,用於對容器中的元素進行排序。它以引用方式接收一個比較函數,允許使用者根據自訂條件對元素進行排序。
比較函數的語法
比較函數的語法如下:
bool compare(const T1& a, const T2& b);
其中:
和
T2 是要比較的元素類型。
表示
a 小於
b。
表示
a 大於或等於
b。
實作客製化排序
要使用sort 函數實作客製化排序,您需要寫一個指定排序行為的自訂比較函數。以下是一個範例:
#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; }
這個程式的輸出:
5 4 3 2 1
compareIntsDescending 比較函數將整數從大到小進行排序。
實戰案例:按自訂規則對字串排序
假設您有一個字串數組,您希望按以下規則對其進行排序:
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); }
#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; }
這個程式的輸出:
dog cat apple banana cherry
以上是如何正確使用C++sort函數實作客製化排序功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!