1

を生成しておりboost::graph、エッジ数は 300k です。エッジのセットをループで作成し、エッジのいくつかのプロパティも計算します。グラフを作成するにはすべてのエッジが必要なので、edge_descriptorまだ s にアクセスできません。セット全体をもう一度パスすることなくこれを行う方法はありますか? エッジを作成するときは を使用しますstd::pair<int, int>が、これは記述子と互換性がありますか?

4

1 に答える 1

1

頂点の数がわかっている場合(グラフを初期化してから、後でエッジを追加できます)、事前に頂点の数がわからない場合、グラフをどのように作成したかわかりません。

頂点がある場合 (つまり、値を取得したらすぐに vertex_descriptors を作成する場合 - 頂点の場合)、 function を使用してグラフにエッジを追加できますboost::add_edge(u,v,the_graph)。同じループで、次のようなグラフと vertex_descriptors があるとします。

//Note: this code is just a guideline, i hope you'd be able to take up from here
typedef typename boost::adjacency_list<boost::listS, boost::vecS,
                            boost::directedS,Vertex_t*> Graph_t;

typedef typename boost::graph_traits<Graph_t>::vertex_descriptor Vd_t;

それから

Graph_t the_graph(Num_vertices);
Vd_t u,v;
//assign u,v
boost::add_edge(u,v,the_graph)
于 2011-07-18T21:16:53.140 に答える