[英]C++ priority queue does not sort
我尝试使用自定义类和比较结构在 C++ 中实现优先级队列,但是每当我推送一个新元素时,队列不会自行排序。
在标题中:
private:
std::priority_queue<Node*, std::vector<Node*>, NodeCompare> queue;
结构:
struct NodeCompare
{
bool operator()(Node* n1, Node* n2)
{
int val1 = n1->getValue();
int val2 = n2->getValue();
return val1 < val2;
}
};
在班上:
Node* node = new Node(nrInTree, value);
queue.push_back(node);
有任何想法吗?
你的代码是正确的。 但我认为你在这里有一个误解。 因为priority_queue 是使用数据结构堆实现的。 众所周知,堆没有排序。 它只有最大元素在前面的属性。 每次向堆中插入一个元素,堆将使用 O(lgN) 时间将最大值推入最前面。 而且每次弹出一个元素,都会得到最大的元素。 但是堆根本没有排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.