Prioritätswarteschlange für benutzerdefinierte Typen

7

Ich habe die untere Struktur

%Vor%

Ich habe mehrere Objekte dieser Struktur. Nun möchte ich diese Objekte in eine Prioritätswarteschlange von AWL einfügen, so dass die Prioritätswarteschlange die Elemente nach Anzahl anordnet. Irgendeine Idee, wie man das macht? Vorzugsweise ist ein Min-Heap bevorzugt. Ich weiß, wie man das oben für primitive Datentypen tut, nicht Strukturen

    
Programmer 07.02.2012, 14:33
quelle

6 Antworten

11

Überladen Sie die & lt; Betreiber:

%Vor%

Ich habe den Vergleich umgekehrt, um min heap zu erreichen, ohne zusätzliche Argumente an die Prioritätswarteschlange zu übergeben. Jetzt verwendest du es wie folgt:

%Vor%

Bearbeiten: Werfen Sie einen Blick auf diesen Beitrag, der fast genau Duplikat zu sein scheint: STL Prioritätswarteschlange für benutzerdefinierte Klassen

    
Ivaylo Strandjev 07.02.2012, 14:39
quelle
8
%Vor%     
Uday Hiwarale 01.10.2013 18:43
quelle
2

Sie müssen operator< für diese Struktur angeben. Etwas wie:

%Vor%

Jetzt können Sie eine Prioritätswarteschlange aus der Standardbibliothek verwenden.

    
R. Martinho Fernandes 07.02.2012 14:37
quelle
1
  1. Mit greater als Vergleichsfunktion können Sie die Prioritätswarteschlange als Min-Heap verwenden,

    %Vor%
  2. Einfügen von Wert durch Ändern ihres Vorzeichens (mit Minus (-) für positive Zahl und mit Plus (+) für negative Zahl können wir die Prioritätswarteschlange in umgekehrter Reihenfolge verwenden.

    %Vor%
  3. Für benutzerdefinierte Datentypen oder Klassen müssen wir der Prioritätswarteschlange mitteilen, in welcher Reihenfolge sie unsere Daten sortiert.

    %Vor%
  4. Für benutzerdefinierte Struktur oder Klasse können Sie priority_queue in beliebiger Reihenfolge verwenden. Nehmen wir an, wir möchten die Leute in absteigender Reihenfolge nach ihrem Gehalt sortieren und wenn sie dann nach ihrem Alter binden.

    %Vor%
  5. Das gleiche Ergebnis kann durch Überladen des Operators erhalten werden:

    %Vor%

    In der Hauptfunktion:

    %Vor%
Taohidul Islam 10.07.2017 17:45
quelle
0

Wir können eine benutzerdefinierte Vergleichsklasse definieren:

Codeausschnitt:

%Vor%     
rashedcs 04.07.2017 05:11
quelle
0

Seit C ++ 11 können Sie

schreiben %Vor%     
yukinarit 12.10.2017 15:41
quelle

Tags und Links