使用boost :: adjacency_list的自定义边缘属性遍历边缘

时间:2019-04-21 16:20:38

标签: c++ boost boost-graph boost-property-map

我正在开发一个使用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来为每个边缘返回完整EdgeData的方法,也没有找到其他方法来迭代和修改边缘。有可能,如果可以,怎么办?

1 个答案:

答案 0 :(得分:0)

您可以从图中询问边缘束

  • 使用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];