Итерация по ребрам с заданными пользователем свойствами ребра boost :: adjacency_list - PullRequest
1 голос
/ 21 апреля 2019

Я работаю над программой моделирования, которая использует 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 голосов
/ 21 апреля 2019

Вы запрашиваете ребро из графа, либо

  • с использованием карты 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];
    
...