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;

所以我可以将距离作为距离[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' 参数传递:: mapped_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