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&' の非 const 参照の無効な初期化タイプ 'boost::detail::error_property_not_found' の一時から'</p>

問題は、エッジから整数へのデフォルトのマッピングがないことにあると思います。もしそうなら、どうやって定義するのですか?

4

1 に答える 1

2

edge_indexグラフには、 の作成に使用しているプロパティがありませんiterator_property_map。このようなプロパティをグラフに追加して入力する必要があります。ブースト グラフ ライブラリ: バンドルされたプロパティとエッジ全体での繰り返しとすべてのエッジのedge_index ゼロを参照してください。何をする必要があるかのために。

于 2012-06-30T20:49:42.610 に答える