Rumah > pembangunan bahagian belakang > C++ > Cara menggunakan fungsi isihan C++ dengan betul untuk melaksanakan fungsi isihan tersuai

Cara menggunakan fungsi isihan C++ dengan betul untuk melaksanakan fungsi isihan tersuai

王林
Lepaskan: 2024-04-02 18:09:02
asal
659 orang telah melayarinya

Fungsi isihan menggunakan fungsi perbandingan tersuai untuk melaksanakan pengisihan tersuai: Tulis fungsi perbandingan: tentukan peraturan isihan, tentukan jenis parameter dan nilai pulangan. Panggil fungsi isihan: lulus fungsi perbandingan tersuai sebagai parameter ketiga untuk mengisih elemen dalam bekas. Contoh: Isih integer dalam tertib menurun dan rentetan mengikut peraturan tersuai (rentetan kosong dahulu, panjang dahulu, susunan leksikografi).

Cara menggunakan fungsi isih dalam C++ untuk melaksanakan fungsi isihan tersuai

Fungsi isih ialah fungsi penting dalam perpustakaan standard C++ dan digunakan untuk mengisih elemen dalam bekas. Ia menerima fungsi perbandingan melalui rujukan, membolehkan pengguna mengisih elemen berdasarkan kriteria tersuai. sort 函数是 C++ 标准库中的一个重要函数,用于对容器中的元素进行排序。它以引用方式接收一个比较函数,允许用户根据自定义条件对元素进行排序。

比较函数的语法

比较函数的语法如下:

bool compare(const T1& a, const T2& b);
Salin selepas log masuk

其中:

  • T1T2 是要比较的元素类型。
  • 返回 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;
}
Salin selepas log masuk

这个程序的输出:

5 4 3 2 1
Salin selepas log masuk

在这个例子中,compareIntsDescending

Sintaks fungsi perbandingan

Sintaks fungsi perbandingan adalah seperti berikut:

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);
}
Salin selepas log masuk

Di mana:
  • T1 dan T2 ialah jenis elemen yang akan dibandingkan.
  • Kembalikan true untuk menunjukkan bahawa a adalah kurang daripada b.

Kembalikan false untuk menunjukkan bahawa a lebih besar daripada atau sama dengan b.

Melaksanakan pengisihan tersuai

Untuk melaksanakan pengisihan tersuai menggunakan fungsi isih, anda perlu menulis fungsi perbandingan tersuai yang menentukan gelagat pengisihan. Berikut ialah contoh: 🎜
#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;
}
Salin selepas log masuk
🎜🎜Output program ini: 🎜🎜
 dog cat apple banana cherry
Salin selepas log masuk
🎜Dalam contoh ini, fungsi perbandingan compareIntsDescending mengisih integer daripada terbesar kepada terkecil. 🎜🎜🎜Kes Praktikal: Isih Rentetan mengikut Peraturan Tersuai🎜🎜🎜Andaikan anda mempunyai tatasusunan rentetan dan anda ingin mengisihnya mengikut peraturan berikut: 🎜🎜🎜Rentetan kosong diisih dahulu. 🎜🎜Rentetan yang lebih panjang diisih dahulu (atau mengikut abjad jika panjangnya sama). 🎜🎜🎜 Anda boleh menulis fungsi perbandingan berikut untuk mencapai ini: 🎜rrreee🎜 Kemudian anda boleh menggunakan fungsi perbandingan ini untuk mengisih tatasusunan rentetan seperti ini: 🎜rrreee🎜🎜Output program ini: 🎜🎜rrreee

Atas ialah kandungan terperinci Cara menggunakan fungsi isihan C++ dengan betul untuk melaksanakan fungsi isihan tersuai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan