我有一个像这样填充大图的项目:
struct EdgeItem{
int mPid1;
int mPid2;
double weight;
};
struct StationItem{
int mPid;
QString mName;
};
QMap<int, StationItem> StationsMap;
QList<EdgeItem> mEdgesList;
QVector<EdgeItem*> GetEdgesByPid(int Pid);
// and some other service methods
由Pid索引的电台地图。 MapLayerEdgeItem的图形边缘具有权重。重要的是,不必复制图形数据并使用现有结构。我需要在它上面运行并计算dijkstra_shortest_paths。请提出我需要的建议。
答案 0 :(得分:2)
为了做到这一点,您需要先将图形调整到增强图库(BGL)界面。正如评论中所述,请查看此question,其中包含boost how to convert existing graphs。
看来你真的在问两个问题。如何使我的图表表示适应BGL?以及我如何在提升中执行(并从中提取意义)Dijsktra?
如果你不熟悉BGL,两者都不是微不足道的。为什么不尝试解决适配器,然后在遇到麻烦时提出更具体的问题?
如果您只需要Djikstra,我建议您使用自己的实现。如果您认为您将使用其他BGL功能,则可以使用适配器。