我目前正在使用 Boost Graph Library。我需要独特的边和顶点。不幸的是,升压图不提供此功能。所以每次插入边或顶点之前我都必须检查手册。
现在我发现了这个:http://www.boost.org/doc/libs/1_49_0/boost/graph/named_graph.hpp http://www.boost.org/doc/libs/1_49_0/boost/graph/named_graph.hpp我想知道这对我有帮助吗?因为文档没有提到named_graph,所以我不知道如何使用它。也许周围有人可以给我一些例子或解释?这对我有很大帮助。
提前致谢。
Boost Graph Library 非常灵活,允许您选择顶点和边的内部表示。如果您选择诸如 std::set 之类的容器,那么您可以直接强制执行唯一的顶点和边。详细信息在这里:使用邻接表 https://www.boost.org/doc/libs/1_78_0/libs/graph/doc/adjacency_list.html
name_graph 类型允许您通过自己选择的属性(例如代表名称的“字符串”)来索引顶点。它有效地将标准 adjacency_list 包装在映射中,其键是命名属性,其值是节点。有一个很好的例子说明如何在 boost 源中使用它命名_顶点_测试.cpp https://github.com/boostorg/graph/blob/develop/test/named_vertices_test.cpp.
不确定您要做什么,但您可以使用 std::map/std::set 自己将某些唯一属性映射到 adjacency_list 中的节点。如果您只需要确保图形在制作时具有唯一的节点/边,那么这种方法简单明了,通常是最好的方法。
您应该考虑将支持的容器更改为 std::set 的后果 - 例如,许多算法的性能将会改变。对于哪个是最好使用的容器没有简单的答案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)