1

BGL を使用してグラフ間の最短経路を計算しようとしています。私が呼び出している関数は

boost::johnson_all_pairs_shortest_paths(g,distances);

ここで、g はカスタム グラフ タイプです

typedef property<label_t, int> LabelProperty;
typedef  property<edge_weight_t,int> EdgeWeightProperty;

//graph definition
typedef adjacency_list<listS, 
                       listS, 
                       directedS,
                        property<vertex_index_t,int, 
                       LabelProperty >,
                        EdgeWeightProperty
                       > Graph;

距離をマップのマップとして実装しています

typedef map<int,map<int,int> > DistMat;
DistMat distances;

そのため、distances[i][j] として距離にアクセスでき、大きなグラフを操作できます。

(gcc 4.6.3 で) コンパイルすると、次のエラーが発生します。

/usr/include/boost/graph/graph_concepts.hpp:518:31: エラー: 'const std::map >' を 'std::map<_Key, _Tp, _Compare, _Alloc> の 'this' 引数として渡しています:: mapping_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [ with _Key = int, _Tp = std::map, _Compare = std::less, _Alloc = std::allocator > >, std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = std::map, std::map<_Key, _Tp, _Compare, _Alloc>::key_type = int]' 修飾子を破棄 [-fpermissive]

実際、[-fpermissive] オプションを使用すると、コードはコンパイルされて機能します。ただし、このオプションを選択しなくてもコンパイルできるようにコードを調整したいと思います。解決策はここにあると信じていますが、非常に多くのテンプレートの中でかなり迷っています。

ヒントはありますか?事前にどうもありがとうございました

4

0 に答える 0