【问题标题】:Iterating through edges with custom defined edge properties of boost::adjacency_list使用 boost::adjacency_list 的自定义边属性迭代边
【发布时间】:2019-09-11 01:28:32
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    你从图中询问边束,要么

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

    【讨论】:

      猜你喜欢
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 2016-06-18
      • 2011-12-18
      • 2021-01-07
      • 2021-07-10
      • 1970-01-01
      相关资源
      最近更新 更多