如何将自定义图形适配到boost图形库模板? 我对C++模板生疏了,我使用的是Boost图形库(致命组合)。我在网上搜索过,但找不到任何关于如何采用自定义图形结构并将其适配到BGL(boost graph library)的直接说明,我可以使用boosts图形遍历算法。有人对图书馆足够熟悉,能帮我吗

如何将自定义图形适配到boost图形库模板? 我对C++模板生疏了,我使用的是Boost图形库(致命组合)。我在网上搜索过,但找不到任何关于如何采用自定义图形结构并将其适配到BGL(boost graph library)的直接说明,我可以使用boosts图形遍历算法。有人对图书馆足够熟悉,能帮我吗,c++,templates,data-structures,graph,boost-graph,C++,Templates,Data Structures,Graph,Boost Graph,编辑:所以,我一直面临的主要问题是,在哪里可以找到一个源,其中将任意图映射到BGL图的总需求。我对模板非常陌生,所以很难阅读BGL的规范/示例。也许我应该寻找一个关于模板的通用源代码?据我所知,这种方法是专门化图形类型的boost::graph\u traits结构。这将使用BGL需要了解的图形的各种重要属性来配置BGL。然后,为图形的专用类型graph\u traits专门化全局模板函数,以实现任何可能应用于特定类型图形的boost图形接口 BGL文档中有一个示例: 这里有几个不同接口的链接

编辑:所以,我一直面临的主要问题是,在哪里可以找到一个源,其中将任意图映射到BGL图的总需求。我对模板非常陌生,所以很难阅读BGL的规范/示例。也许我应该寻找一个关于模板的通用源代码?

据我所知,这种方法是专门化图形类型的
boost::graph\u traits
结构。这将使用BGL需要了解的图形的各种重要属性来配置BGL。然后,为图形的专用类型
graph\u traits
专门化全局模板函数,以实现任何可能应用于特定类型图形的boost图形接口

BGL文档中有一个示例:

这里有几个不同接口的链接,这些链接指示如果要支持该接口,需要为图形专门化哪些全局模板函数。接口的完整列表如下所示:


我的建议是完全放弃使用BGL,除非您已经在它上面编写了大量代码。我最近在一个大型图形分析项目上测试它,以备将来使用,我发现它几乎无法使用,因为它有一个过于复杂且设计糟糕的API

BGL中没有简单的任务,只有复杂的任务,由于BGL的模板层次结构过于复杂,我一直在与编译器抗争。几乎没有有用的文档(至少在真正需要的地方没有),没有足够的示例只会加剧问题。这不是编写代码的方法

我建议换成。它是稳定的,用C++编写,易于理解和代码化,提供了几种特殊的图形形式来支持不同的使用需求,同时支持BFS和DFS搜索/访问者功能。它也有自己的节点/边属性映射的等价物,因此您应该能够将自己的图形结构和其他数据适配到它上


试试柠檬;味道更好,溃疡更少

如果我们能看到你的自定义图形结构的一个示例,这会有所帮助。我已经阅读了该网站关于模板工作的大部分BGL文档。但是,如果您不熟悉LEDA,那么您展示的示例并不琐碎,也没有得到很好的解释。如果你看他们的代码,几乎完全没有注释。我在boost graph网站上找到的每一段代码都几乎完全没有注释,对于一个如此普通的对象来说,这是非常令人沮丧的。那么,这将有所帮助,如果您指出了您不清楚的特定事项,或者与图形结构相关的特定事项,这使得自适应变得困难;扩展得很好,没有性能问题等。感谢您的想法!不幸的是,我使用的是一个庞大的代码库,我认为我的老板不需要另一种依赖:SOh,很高兴听到我不是唯一一个认为BGL非常复杂和过于笼统,并且示例没有特别说明问题的人!很高兴听到这个消息,我不是唯一一个认为BGL可能过于复杂的人——我会调查LEMON-ty!