我正在尝试使用 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] 选项,代码可以编译并运行。但是,我想安排代码以便在不选择此选项的情况下进行编译。我相信解决方案就在这里,但我在这么多模板中迷失了方向。
有什么提示吗?非常感谢您提前