(タイトルをお詫びします。140文字より短い良いものを思い付くことができませんでした...)
boost::graphライブラリのグラフアルゴリズムを書いています。私のアルゴリズム内では、ノードに関する変数、重み、およびカウンターを保持する必要があります。これを行う一般的な方法は、ドキュメントや他の人のコードからわかる限り、これらのプロパティをグラフに直接添付し、プロパティマップを使用してアクセスすることです。
ただし、ライブラリ関数では、特定の読み取り/書き込みマップをグラフにバンドルする必要がないため、独自の外部プロパティマップを作成します。しかし、これらにはstd::map
(または同等の)が必要なので、astd::map
とaの両方を作成することになりboost::associative_property_map<std::map>
ます。これの良いところは、アルゴリズムのプロパティとユーザーのプロパティ(boost::get
)の両方を取得する方法が統一されていることですが、欠点として、2つの冗長なマップがあるようです。言及された均一性以外にこれを行うことに意味はありますか?どういうわけか、プロパティマップに独自の内部マップを維持させることはできますか(メモリなどにゲインがないことはわかりますが、プロパティごとに追跡するメンバー変数が1つ少なくなります)。