1

Boost Graphic Library に関して別の問題があり、Google で検索したりドキュメントを読んだりしても答えられませんでした。他の質問とは直接関係ないので、新しいスレッドを立てたほうがいいと思います。

隣接レイアウトのグラフがあり、バンドルされたプロパティを使用してノードとエッジのデータにアクセスします。便宜上、Graph に typedef を使用します。したがって、次のように入力することで、たとえば vertex_descriptor 用に保存されているデータにアクセスできます。

Graph[my_vertex_descriptor].setX(4);
Graph[my_vertex_descriptor].setY(10);

ここで、データ格納オブジェクトへの参照を定義して、そのようなものを入力できるようにしたいと思います。

typedef Graph[vertex_descriptor]::type Vertex;
Vertex v = Graph[my_vertex_descriptor];
v.setX(4);
v.setY(10);

これまたは同様のアプローチにより[]operator、マップの と特定の記述子オブジェクトを使用してアクセスされるマップされた値の不要な再計算を回避しようとします。私の頂点とエッジには多くのデータが含まれているため、特定の状況では、現在のコードはこのデータを処理するために同じ値の多くの再計算を生成します。これは醜いようです。

私がやろうとしていることを達成する可能性があるかどうか、誰かが知っていますか?

4

2 に答える 2

1

バンドルされたプロパティを使用しました。

Bundled_vertex_property prop_v = get(vertex_bundle, my_graph) // or get(vertex_bundle, v, my_graph)
Bundled_edge_property prop_e = get(edge_bundle, my_graph) // or get(edge_bundle, v, my_graph)

バンドルされたプロパティを直接取得します。

于 2011-02-09T22:16:12.627 に答える
0

私の頭の上から、これはうまくいくはずです(適切に定義された組み込みのグラフタイプの1つを使用していると仮定しますgraph_traits):

typedef boost::graph_traits<Graph>::vertex_descriptor Vertex;
Vertex v = Graph[my_vertex_descriptor];
v.setX(4);
v.setY(10);

この方法で実際に多くのことにアクセスできます。詳細については、BGL のグラフの概念をご覧ください: http://www.boost.org/doc/libs/1_45_0/libs/graph/doc/graph_concepts.html

于 2010-12-03T19:58:57.090 に答える