カスタム コンパレータを使用した C での優先度キューの宣言
C でカスタム コンパレータを使用する場合、優先度キューを宣言すると課題が生じる可能性があります。特定の問題を詳しく調べて、正しいアプローチを検討してみましょう。
提供されたコード スニペットで述べたように、Node クラスの外部に存在する bool Compare(Node a, Node b) を比較関数として使用しています。この問題を修正するには、次の点を考慮してください:
比較クラスを定義する: 関数ポインターを使用する代わりに、オーバーロードされた Operator() を使用してクラスを定義できます。実装。例:
<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 中国語 Web サイトの他の関連記事を参照してください。