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