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