我在C模板上生锈了,我正在使用boost图库(一个致命的组合) . 我在网上搜索过,找不到关于如何采用自定义图形结构的任何直接指令,并且足够适合BGL(boost图形库),我可以使用增强图遍历算法 . 有没有熟悉图书馆帮助我的人?
编辑:所以,我一直遇到的主要问题是在哪里找到一个源,其中将任意图映射到BGL图的总要求 . 我是模板的新手,所以我很难阅读BGL的规范/示例 . 也许我应该寻找模板的一般来源?
我的建议是完全放弃使用BGL,除非你已经有大量的代码写在它上面 . 我最近测试它是为了将来用于大型图形分析项目,我发现它几乎无法使用,因为API过于复杂且设计不佳 .
BGL中没有简单的任务,只有复杂的任务,而且由于BGL具有过于复杂的模板层次结构,我一直在与编译器作斗争 . 几乎没有有用的文档(至少不是它真正需要的地方)而且没有足够的例子只会加剧问题 . 这是无法编写代码的方法 .
我建议切换到LEMON . 它是稳定的,用C语言编写,易于理解和编写,提供了几种专用形式的图形来支持不同的使用需求,它支持BFS和DFS搜索/访问者功能 . 它还有自己的等效节点/边的属性映射,因此您应该能够将自己的图形结构和其他数据放在其上 .
试试LEMON;它味道好多了,会减少溃疡 . ;-)
据我所知,这种方法是为图表类型专门设计 boost::graph_traits 结构 . 这为BGL配置了它需要了解的关于图形的各种重要属性 . 然后,您可以为图形的专用类型 graph_traits 专门化全局模板函数,以实现可能适用于您的特定图形类型的任何增强图形接口 .
boost::graph_traits
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
2 回答
我的建议是完全放弃使用BGL,除非你已经有大量的代码写在它上面 . 我最近测试它是为了将来用于大型图形分析项目,我发现它几乎无法使用,因为API过于复杂且设计不佳 .
BGL中没有简单的任务,只有复杂的任务,而且由于BGL具有过于复杂的模板层次结构,我一直在与编译器作斗争 . 几乎没有有用的文档(至少不是它真正需要的地方)而且没有足够的例子只会加剧问题 . 这是无法编写代码的方法 .
我建议切换到LEMON . 它是稳定的,用C语言编写,易于理解和编写,提供了几种专用形式的图形来支持不同的使用需求,它支持BFS和DFS搜索/访问者功能 . 它还有自己的等效节点/边的属性映射,因此您应该能够将自己的图形结构和其他数据放在其上 .
试试LEMON;它味道好多了,会减少溃疡 . ;-)
据我所知,这种方法是为图表类型专门设计
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