Как добавить веса к этому помеченному графику, который использует add_edge_by_label для использования в dijkstra_shortest_paths?
Пытаюсь использовать пример
Спасибо
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/copy.hpp>
#include <boost/graph/labeled_graph.hpp>
#include <boost/graph/graph_utility.hpp>
struct NodeInfo1 { int i; };
struct EdgeInfo1 { int j; };
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, NodeInfo1, EdgeInfo1> AList;
typedef boost::labeled_graph<AList, std::string> Graph;
auto TestCopyGraph()
{
std::string names[3] = { "A", "B", "C" };
NodeInfo1 props[3] = { {11}, {22}, {33} };
Graph grid(3, names, props);
/*auto e =*/ add_edge_by_label("C", "B", EdgeInfo1{17}, grid);
Graph g1 = grid; // just copy-construct
return g1;
}
Просто где угодно. В комплекте j
поле?
auto weight_map = boost::get(&EdgeInfo1::j, g1);
Во внешней карте?
std::map<Graph::edge_descriptor, double> weights;
auto weight_map = boost::make_assoc_property_map(weights);
Передайте его dijkstra либо напрямую, либо как именованный параметр в соответствии с документацией (или найдите примеры в моих ответах).
Других решений пока нет …