C++ 使用boost::Adjacence_列表的自定义边属性遍历边

C++ 使用boost::Adjacence_列表的自定义边属性遍历边,c++,boost,boost-graph,boost-property-map,C++,Boost,Boost Graph,Boost Property Map,我正在开发一个模拟程序,它使用boost::Adjacence_列表来表示图形。边缘具有服装设计属性 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) {} }; struct edge\u数据{ 常量浮动线性成

我正在开发一个模拟程序,它使用boost::Adjacence_列表来表示图形。边缘具有服装设计属性

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) {}
};
struct edge\u数据{
常量浮动线性成本,常量成本;
std::队列代理;
边数据(浮点lin,浮点con):线性成本(lin),常量成本(con){}
};

在尝试了几种方法之后,我还没有找到一种方法来创建返回每条边的完整EdgeData的属性映射,也没有找到任何其他方法来迭代和修改边。是否可能,如果可能,如何实现?

您也可以从图形中询问边束

  • 使用
    boost::edge\u 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::edge\u 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];