Heim  >  Artikel  >  Backend-Entwicklung  >  Wie deklariere ich eine Prioritätswarteschlange mit benutzerdefinierten Komparatoren in C?

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

DDD
DDDOriginal
2024-10-25 05:28:02597Durchsuche

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>
  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>

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>

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!

Stellungnahme:
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