使用自訂比較器在C 中宣告優先權佇列
在C 中使用自訂比較器時,宣告優先權佇列可能會帶來挑戰。讓我們深入研究您的具體問題並探索正確的方法。
如提供的程式碼片段所述,您使用 bool Compare(Node a, Node b) 作為比較器函數,該函數存在於 Node 類別之外。要解決此問題,請考慮以下事項:
定義比較類: 您可以定義一個帶有重載運算子() 的類,而不是使用函數指針執行。例如:
<code class="cpp">class Compare { public: bool operator()(const Node& a, const Node& b) { // Your comparison logic here } };</code>
宣告優先權佇列:定義Compare 類別後,使用下列語法宣告優先權佇列:
<code class="cpp">priority_queue<Node, vector<Node>, Compare> openSet;</code>
或者,如果由於限製而無法定義自訂類,則可以使用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>
遵循其中一種方法,您可以使用 C 中的自訂比較器有效地聲明優先權佇列。
以上是如何在 C 中使用自訂比較器聲明優先權佇列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!