Node オブジェクトで構成される有向非巡回グラフがあります。各ノードにはstd::shared_ptr
、グラフ内の子である他のノードへの のリストがあります。ノードの挿入/置換/再親化、ノードが別のノードの祖先であるかどうかのテストなど、必要な便利なメソッドがたくさんあります。標準の STL に似たメソッドもあれば、有向非巡回グラフに固有のものもあれば、私のノードに固有のものもあります。ニーズ。
問題は、そのようなメソッドがノードをパラメーターとして受け取る場合、参照を受け取る必要があるかどうかです。のweak_ptr
?またはshared_ptr
?ユースケースを調べてみましたが、わかりにくいです。ここで最高のデザインは何ですか?私はスマート ポインターを初めて使用するので、何が最適な選択なのかわかりません。shared_ptr<Node>
ノードオブジェクトの「表現」として扱うべきですか? それとも、選択の仕方がより洗練されているのでしょうか。
前もって感謝します