BGL BasicMatrix实现与地图

时间:2012-11-22 18:05:19

标签: c++ boost

我正在尝试使用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;

所以我可以访问distaces作为distance [i] [j]并且可以使用大图。

当我编译(使用gcc 4.6.3)时,我收到以下错误:

/usr/include/boost/graph/graph_concepts.hpp:518:31:错误:将'const std :: map&gt;'作为'this'参数传递给'std :: map&lt; _Key,_Tp,_Compare, _Alloc&GT; :: mapped_type&安培; std :: map&lt; _Key,_Tp,_Compare,_Alloc&gt; :: operator [](const key_type&amp;)[with _Key = int,_Tp = std :: map,_Compare = std :: less,_Alloc = std :: allocator&gt ; &gt;,std :: map&lt; _Key,_Tp,_Compare,_Alloc&gt; :: mapped_type = std :: map,std :: map&lt; _Key,_Tp,_Compare,_Alloc&gt; :: key_type = int]'丢弃限定符[-fpermissive ]

的确,如果我使用[-fpermissive]选项,代码会编译并运行。但是,我想安排代码,以便编译而不选择此选项。我相信解决方案是here,但我在很多模板中都很丢失。

任何提示?非常感谢您提前

0 个答案:

没有答案