我有一个类Node
,除了存储数据外,还有一个指向其 parent 的指针Node
。我将一些节点存储在 a 中priority_queue
并覆盖<
运算符以进行比较。
class Node {
public:
string name;
Node *parent;
int cost;
};
static bool operator<(const Node& lhs, const Node& rhs) {
return lhs.cost < rhs.cost;
}
priority_queue<Node> queue;
问题是,父指针似乎搞砸了。我的猜测是,当我Node
从队列中弹出 a 时,Nodes
它们实际上在内存中向上移动并且指针指向 wrong Nodes
。这可能吗?
我尝试使用 a priority_queue
ofNode*
指针来代替(并使用创建它们new
),这样只有指针被重新排序,而不是对象本身。这似乎解决了指针问题,但是现在队列是按内存地址排序的,而不是Nodes
.
如何实现一个priority_queue
对象相互指向的对象?