Heim > Backend-Entwicklung > C++ > Hauptteil

Wie deklariere ich eine Prioritätswarteschlange mit benutzerdefinierten Komparatoren in C?

DDD
Freigeben: 2024-10-25 05:28:02
Original
590 Leute haben es durchsucht

How to Declare a Priority Queue with Custom Comparators in C  ?

Deklarieren einer Prioritätswarteschlange in C mit benutzerdefinierten Komparatoren

Bei der Arbeit mit benutzerdefinierten Komparatoren in C kann das Deklarieren einer Prioritätswarteschlange eine Herausforderung darstellen. Lassen Sie uns auf Ihr spezifisches Problem eingehen und den richtigen Ansatz erkunden.

Wie im bereitgestellten Codeausschnitt erwähnt, verwenden Sie bool Compare(Node a, Node b) als Komparatorfunktion, die außerhalb der Node-Klasse existiert. Um das Problem zu beheben, beachten Sie Folgendes:

  1. Definieren Sie eine Vergleichsklasse: Anstatt einen Funktionszeiger zu verwenden, können Sie eine Klasse mit einem überladenen Operator() definieren. Durchführung. Zum Beispiel:

    <code class="cpp">class Compare {
    public:
        bool operator()(const Node& a, const Node& b) {
            // Your comparison logic here
        }
    };</code>
    Nach dem Login kopieren
  2. Deklarieren Sie die Prioritätswarteschlange: Nachdem Sie die Vergleichsklasse definiert haben, deklarieren Sie die Prioritätswarteschlange mit der folgenden Syntax:

    <code class="cpp">priority_queue<Node, vector<Node>, Compare> openSet;</code>
    Nach dem Login kopieren

Wenn Sie aufgrund von Einschränkungen keine benutzerdefinierte Klasse definieren können, können Sie alternativ std::function als Komparatortyp. Es ist jedoch möglicherweise nicht so effizient wie der erste Ansatz.

<code class="cpp">bool Compare(const Node& a, const Node& b) {
    // Your comparison logic here
}

int main() {
    std::priority_queue<Node, vector<Node>, std::function<bool(const Node&, const Node&)>> openSet(Compare);
    return 0;
}</code>
Nach dem Login kopieren

Durch die Einhaltung eines dieser Ansätze können Sie mithilfe eines benutzerdefinierten Komparators in C effektiv eine Prioritätswarteschlange deklarieren.

Das obige ist der detaillierte Inhalt vonWie deklariere ich eine Prioritätswarteschlange mit benutzerdefinierten Komparatoren in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!