Nodeデータの格納に加えて、その親へのポインタを持つクラスがありますNode。いくつかのノードをに格納し、比較のため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、実際にはメモリ内で上に移動し、ポインタが間違った方向を指していると思いますNodes。これでいいの?
代わりにpriority_queueofポインターを使用して(そしてそれらをで作成して)、オブジェクト自体ではなく、ポインターのみが並べ替えられるようにしました。これでポインタの問題が修正されたようですが、キューはメモリアドレスで並べ替えられており、のコストではありません。Node*newNodes
priority_queueオブジェクトが相互にポイントしているを実装するにはどうすればよいですか?