使用自定义比较器在 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中文网其他相关文章!