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_queue
ofポインターを使用して(そしてそれらをで作成して)、オブジェクト自体ではなく、ポインターのみが並べ替えられるようにしました。これでポインタの問題が修正されたようですが、キューはメモリアドレスで並べ替えられており、のコストではありません。Node*
new
Nodes
priority_queue
オブジェクトが相互にポイントしているを実装するにはどうすればよいですか?