0

我究竟做错了什么?

#include <vector>

#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/dijkstra_shortest_paths.hpp>

using namespace std;

typedef boost::adjacency_list<> Graph;

void dijkstra(Graph &g, vector<double> &edge_weights, int source, vector<double> &dist,   vector<int> &prev) {
boost::dijkstra_shortest_paths(g, source,
                                 boost::weight_map(boost::make_iterator_property_map(edge_weights.begin(), get(boost::edge_index, g))));

}

(编译:​​g++ main.cc -L/usr/local/boost/

错误:

/usr/include/boost/graph/detail/adjacency_list.hpp:2665:错误:从“boost::detail::error_property_not_found”类型的临时值初始化“boost::detail::error_property_not_found&”类型的非常量引用无效'</p>

我认为问题可能是没有从边缘到整数的默认映射。如果是这样,我如何定义一个?

4

1 回答 1

2

您的图表没有edge_index您在创建iterator_property_map. 您将需要将这样的属性添加到您的图表中并填写它。请参阅Boost Graph Library: Bundled Properties 并迭代边缘所有边缘的 edge_index 为零?对于需要做的事情。

于 2012-06-30T20:49:42.610 回答