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
Ü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
Sie müssen operator<
für diese Struktur angeben. Etwas wie:
Jetzt können Sie eine Prioritätswarteschlange aus der Standardbibliothek verwenden.
Mit greater
als Vergleichsfunktion können Sie die Prioritätswarteschlange als Min-Heap verwenden,
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%Für benutzerdefinierte Datentypen oder Klassen müssen wir der Prioritätswarteschlange mitteilen, in welcher Reihenfolge sie unsere Daten sortiert.
%Vor%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%Das gleiche Ergebnis kann durch Überladen des Operators erhalten werden:
%Vor%In der Hauptfunktion:
%Vor%Tags und Links c++ priority-queue min-heap