1

我正在开发一个使用 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,或者任何其他迭代和修改边缘的方法。有可能吗,如果有,怎么做?

4

1 回答 1

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];
    
于 2019-04-21T16:55:58.063 回答