私はBGL初心者です:私は有向グラフを持っていて、エッジにバンドルプロパティを使用しています。 int型を入力します。ユニークなインデックスを知って、私はその上で操作を実行するために、そのエッジの対応するedge_descriptorを取得したいと思います。次の例は、私の問題をまとめたものです。ブーストグラフライブラリ:end_descriptorを取得するか、int型のインデックスでエッジにアクセスする
#include <boost/graph/adjacency_list.hpp>
struct EdgeProperties {
EdgeProperties(): distance(10), time_limit(5) {};
int index;
int distance;
int time_limit;
};
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, boost::no_property, EdgeProperties> Graph;
int main() {
Graph graph;
EdgeProperties edge_prop1, edge_prop2, edge_prop3, edge_prop4;
// Define edge properties
edge_prop1.index = 0;
edge_prop2.index = 1;
edge_prop3.index = 2;
edge_prop4.index = 3;
// Add edges to graph
boost::add_edge(0, 1, edge_prop1, graph);
boost::add_edge(0, 2, edge_prop2, graph);
boost::add_edge(1, 3, edge_prop3, graph);
boost::add_edge(2, 3, edge_prop4, graph);
// Get vertex_descriptor from an (int) index:
int vertex_index = 2;
boost::graph_traits<Graph>::vertex_descriptor v = boost::vertex(vertex_index, graph);
// I would like to get an edge_descriptor from an (int) index property:
// The following DOES NOT work:
boost::graph_traits<Graph>::edge_descriptor e = boost::edge(edge_prop1.index, graph);
}
私はプロパティマップについても読んでいますが、解決策が見つかりませんでした。内部のプロパティよりもbundled propertiesが好きです。 バンドルプロパティを介して一意のint型インデックスをエッジに割り当て、これらのint型の値を使ってエッジにアクセスする方法はありますか?