2011-08-22 11 views
1

グラフ上でboost::getを呼び出すとき、戻り値の型はboost::associative_property_map<Graph, PropertyType>です。この地図のコピーを入手したいと思います。boost::vector_property_mapに保存したいと思います。ただし、ベクトルマップに単純に割り当てることができるだけの互換性はありません。 property_mapのソースを見ると、boost::associative_property_mapにはアクセスメソッドがまったくないようです(少なくともベクトルバリアントは「ストレージイテレータ」を公開しています)。boost :: vector_property_mapへのboost :: property_mapのコピー

方法はありますか?または、何とかキーを見つけてループする必要がありますか?

答えて

1

私は申し訳ありませんが、単純にboost :: associative_property_mapを使用すると、含まれているアイテムに対してイテレータを取得することはできません。他の方法で反復処理を行う必要があります。エッジや頂点を繰り返し処理して、boost :: vector_property_mapに入れてください。

しかし、そうしなければならないということは、プロパティマップが提供する共通のインターフェイスを持つという考え全体を解体しているということです。他のproperty_map型を受け入れるには、vector_property_mapが現在必要なアルゴリズムをテンプレート化できませんか?

+0

値を抽出するためにセット全体を反復処理しました。私が必要としたのは、アルゴリズムで使用するすべての値のコピーでした。マップに格納された値は、アルゴリズムの実行中に変更される可能性があったためです。 – carlpett