【发布时间】:2021-01-26 16:21:49
【问题描述】:
我正在编写一个寻路算法,所以我有代表节点的TreeNode,但在我的算法中,我有一个open 容器,它是一个priority_queue,它允许快速检索最高优先级的节点。我还需要快速检查我是否已经探索了一个给定的节点,所以我有一个closed 容器,它是一个set。
现在的问题是:谁拥有什么?我的 TreeNode 存储在哪里? open 和 closed 容器本身不需要存储节点,它们只需一个指向它们的指针,但是我在哪里存储节点呢?
我的想法是将weak_ptr<TreeNode> 存储在这些容器中,当我想创建一个新的TreeNode 时我使用make_shared<TreeNode>?或者我可以有一个存储所有节点的vector<TreeNode>,而其他容器只存储索引,这样我就可以避免昂贵的shared_ptr?
【问题讨论】:
标签: c++ containers smart-pointers