首页 文章

如何将自定义图形适合增强图库模板?

提问于
浏览
10

我在C模板上生锈了,我正在使用boost图库(一个致命的组合) . 我在网上搜索过,找不到关于如何采用自定义图形结构的任何直接指令,并且足够适合BGL(boost图形库),我可以使用增强图遍历算法 . 有没有熟悉图书馆帮助我的人?

编辑:所以,我一直遇到的主要问题是在哪里找到一个源,其中将任意图映射到BGL图的总要求 . 我是模板的新手,所以我很难阅读BGL的规范/示例 . 也许我应该寻找模板的一般来源?

2 回答

  • 5

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

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

    我建议切换到LEMON . 它是稳定的,用C语言编写,易于理解和编写,提供了几种专用形式的图形来支持不同的使用需求,它支持BFS和DFS搜索/访问者功能 . 它还有自己的等效节点/边的属性映射,因此您应该能够将自己的图形结构和其他数据放在其上 .

    试试LEMON;它味道好多了,会减少溃疡 . ;-)

  • 6

    据我所知,这种方法是为图表类型专门设计 boost::graph_traits 结构 . 这为BGL配置了它需要了解的关于图形的各种重要属性 . 然后,您可以为图形的专用类型 graph_traits 专门化全局模板函数,以实现可能适用于您的特定图形类型的任何增强图形接口 .

    BGL文档就是一个例子:

    http://www.boost.org/doc/libs/1_43_0/libs/graph/doc/leda_conversion.html

    那里有几个不同接口的链接,如果你想支持那个接口,它们表明你需要专门为你的图形设置哪些全局模板函数 . 完整的接口列表如下:

    http://www.boost.org/doc/libs/1_43_0/libs/graph/doc/graph_concepts.html

相关问题