我正在尝试使用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,我无法通过键获取值)
我有几个问题:
谢谢!
答案 0 :(得分:2)
我终于切换到了Lemon graph library,这并不像BGL那样hacky
答案 1 :(得分:0)
我没有看到为什么map不能用作存储传出边缘的数据结构的原因。 Map具有与std::vector
等类似的方式工作的迭代器。要处理传入的边缘,每个顶点需要2个映射。 AFAIK BGL支持顶点列表。
我建议你修改(破解)BGL,看看会发生什么。变化可能不小。您必须为新类型的容器提供adjacency_list特化。很可能这会奏效。