Heim > Backend-Entwicklung > C++ > So verwenden Sie die C++-Sortierfunktion richtig, um eine benutzerdefinierte Sortierfunktion zu implementieren

So verwenden Sie die C++-Sortierfunktion richtig, um eine benutzerdefinierte Sortierfunktion zu implementieren

王林
Freigeben: 2024-04-02 18:09:02
Original
659 Leute haben es durchsucht

Die Sortierfunktion verwendet eine benutzerdefinierte Vergleichsfunktion, um eine benutzerdefinierte Sortierung zu implementieren: Schreiben Sie eine Vergleichsfunktion: Geben Sie die Sortierregeln an, definieren Sie Parametertypen und Rückgabewerte. Rufen Sie die Sortierfunktion auf: Übergeben Sie die benutzerdefinierte Vergleichsfunktion als dritten Parameter, um die Elemente im Container zu sortieren. Beispiel: Sortieren Sie Ganzzahlen in absteigender Reihenfolge und Zeichenfolgen nach benutzerdefinierten Regeln (leere Zeichenfolge zuerst, Länge zuerst, lexikografische Reihenfolge).

So verwenden Sie die Sortierfunktion in C++, um eine benutzerdefinierte Sortierfunktion zu implementieren

Die Funktion sort ist eine wichtige Funktion in der C++-Standardbibliothek und wird zum Sortieren von Elementen in einem Container verwendet. Es erhält eine Vergleichsfunktion per Referenz, die es dem Benutzer ermöglicht, Elemente nach benutzerdefinierten Kriterien zu sortieren. sort 函数是 C++ 标准库中的一个重要函数,用于对容器中的元素进行排序。它以引用方式接收一个比较函数,允许用户根据自定义条件对元素进行排序。

比较函数的语法

比较函数的语法如下:

bool compare(const T1& a, const T2& b);
Nach dem Login kopieren

其中:

  • 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;
}
Nach dem Login kopieren

这个程序的输出:

5 4 3 2 1
Nach dem Login kopieren

在这个例子中,compareIntsDescending

Syntax der Vergleichsfunktion

Die Syntax der Vergleichsfunktion lautet wie folgt:

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);
}
Nach dem Login kopieren

Wobei:
  • T1 und T2 sind die zu verwendenden Elementtypen verglichen.
  • Gib true zurück, um anzugeben, dass a kleiner als b ist.

Gib false zurück, um anzugeben, dass a größer oder gleich b ist.

Benutzerdefinierte Sortierung implementieren

Um eine benutzerdefinierte Sortierung mit der Funktion sort zu implementieren, müssen Sie eine benutzerdefinierte Vergleichsfunktion schreiben, die das Sortierverhalten angibt. Hier ist ein Beispiel: 🎜
#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;
}
Nach dem Login kopieren
🎜🎜Die Ausgabe dieses Programms: 🎜🎜
 dog cat apple banana cherry
Nach dem Login kopieren
🎜In diesem Beispiel sortiert die Vergleichsfunktion compareIntsDescending die Ganzzahlen vom größten zum kleinsten. 🎜🎜🎜Praktischer Fall: Sortieren von Zeichenfolgen nach benutzerdefinierten Regeln🎜🎜🎜Angenommen, Sie haben ein Array von Zeichenfolgen und möchten diese nach den folgenden Regeln sortieren: 🎜🎜🎜Leere Zeichenfolgen werden zuerst sortiert. 🎜🎜Längere Zeichenfolgen werden zuerst sortiert (oder alphabetisch, wenn die Länge gleich ist). 🎜🎜🎜 Sie können die folgende Vergleichsfunktion schreiben, um dies zu erreichen: 🎜rrreee🎜 Dann können Sie diese Vergleichsfunktion verwenden, um das String-Array wie folgt zu sortieren: 🎜rrreee🎜🎜Ausgabe dieses Programms: 🎜🎜rrreee

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die C++-Sortierfunktion richtig, um eine benutzerdefinierte Sortierfunktion zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage