我有一个有向无环图,由 Node 对象组成。每个节点都有一个std::shared_ptr
到其他节点的 s 列表,这些节点是它在图中的子节点。我需要很多有用的方法,例如插入/放置/重新设置节点,测试一个节点是否是另一个节点的祖先等。有些是标准的类似 STL 的方法,有些是特定于有向无环图和特定于我的需要。
问题是,当这样的方法以一个节点为参数时,它应该带一个引用吗?一个weak_ptr
?还是一个shared_ptr
?我试图检查用例,但很难说。这里最好的设计是什么?我是智能指针的新手,我不确定什么是最佳选择。我应该将shared_ptr<Node>
其视为节点对象的“表示”吗?或者也许选择的方式更复杂?
提前致谢