使用 boost::adjacency_list 的自定义边属性迭代边
Iterating through edges with custom defined edge properties of boost::adjacency_list
我正在开发一个使用 boost::adjacency_list 表示图形的模拟程序。边缘具有服装设计属性
struct edge_data{
const float linear_cost, const_cost;
std::queue<*Agent> agents;
edge_data(float lin, float con) : linear_cost(lin),const_cost(con) {}
};
在尝试了几种方法后,我还没有找到一种方法来创建 property_map 其中 returns 每个边缘的完整 EdgeData,或任何其他迭代和修改边缘的方法。这可能吗?如果可能,怎么做?
你问图中的边束,要么
使用 boost::edge_bundle_t
属性 地图:
auto pmap = boost::get(boost::edge_bundle, my_graph);
edge_data& data = pmap[my_edge_descriptor];
使用便捷访问器:
edge_data& data = mygraph[my_edge_descriptor];
或使用特定的 属性 地图作为子属性:
auto costmap = boost::get(&edge_data::linear_cost, my_graph);
float cost = costmap[my_edge_descriptor];
我正在开发一个使用 boost::adjacency_list 表示图形的模拟程序。边缘具有服装设计属性
struct edge_data{
const float linear_cost, const_cost;
std::queue<*Agent> agents;
edge_data(float lin, float con) : linear_cost(lin),const_cost(con) {}
};
在尝试了几种方法后,我还没有找到一种方法来创建 property_map 其中 returns 每个边缘的完整 EdgeData,或任何其他迭代和修改边缘的方法。这可能吗?如果可能,怎么做?
你问图中的边束,要么
使用
boost::edge_bundle_t
属性 地图:auto pmap = boost::get(boost::edge_bundle, my_graph); edge_data& data = pmap[my_edge_descriptor];
使用便捷访问器:
edge_data& data = mygraph[my_edge_descriptor];
或使用特定的 属性 地图作为子属性:
auto costmap = boost::get(&edge_data::linear_cost, my_graph); float cost = costmap[my_edge_descriptor];