首頁 > 後端開發 > C++ > 如何正確使用C++sort函數實作客製化排序功能

如何正確使用C++sort函數實作客製化排序功能

王林
發布: 2024-04-02 18:09:02
原創
684 人瀏覽過

sort 函數利用自訂比較函數實作客製化排序:編寫比較函數:指定排序規則,定義參數類型和傳回值。呼叫 sort 函數:將自訂比較函數作為第三個參數,對容器中的元素進行排序。範例:依降序對整數排序,依自訂規則對字串排序(空字串優先、長度優先、字典序優先)。

如何在C 中使用sort 函數實作客製化排序功能

#sort 函數是C 標準函式庫中的一個重要函數,用於對容器中的元素進行排序。它以引用方式接收一個比較函數,允許使用者根據自訂條件對元素進行排序。

比較函數的語法

比較函數的語法如下:

bool compare(const T1& a, const T2& b);
登入後複製

其中:

  • ##T1 T2 是要比較的元素類型。
  • 傳回
  • true 表示 a 小於 b
  • 傳回
  • false 表示 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板