繁体   English   中英

边列表上带有地图的 BGL 图

[英]BGL graph with map on edges list

我正在尝试使用 Boost Graph Library 创建一些特定的结构。 我需要有带有输入和输出端口的节点(顶点)。 每个输出端口可以连接到其他节点的任何输入端口。 我希望能够检查特定的输出或输入端口是否连接到任何其他端口。

这个想法是在 adjacency_list 中使用 std::map 作为 OutEdgeList 。

根据: http : //www.boost.org/doc/libs/1_52_0/libs/graph/doc/using_adjacency_list.html#sec :choosing-graph-type 我只能选择 std::vector 之一, std::list、std::slist、std::set、std::multiset 和 std::hash_set。 (您可以选择 mapS 作为类型,但它实现为 std::set 并且我无法通过键获取值)

我有几个问题:

  1. 是否可以使用 std::map? 如果是如何?
  2. 使用 std::map 时如何遍历顶点的输入?
  3. 如果以上是不可能的,我该如何实现适合问题的结构?

谢谢!

我终于切换到Lemon 图形库,它不像 BGL 那样 hacky

我不明白为什么 map 不能用作存储传出边缘的数据结构。 Map 的迭代器的工作方式与std::vector等类似。要处理传入的边,每个顶点上需要 2 个映射。 AFAIK BGL 支持顶点上的两个列表。

我建议你修改(hack)BGL,看看会发生什么。 变化可能不小。 您必须为您的新型容器提供 adjacency_list 专业化。 这很可能会奏效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM