带边框列表上的地图的BGL图

时间:2012-11-14 08:34:47

标签: c++ boost map boost-graph

我正在尝试使用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. 时,如何迭代顶点输入?
  4. 如果上述情况不可能,我该如何实施这些结构 适合这个问题?
  5. 谢谢!

2 个答案:

答案 0 :(得分:2)

我终于切换到了Lemon graph library,这并不像BGL那样hacky

答案 1 :(得分:0)

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

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