为什么我不能在OutEdgeList=listS和VertexList=listS情况下使用boost graph write_graphviz?

5

为什么我无法编译以下简单应用程序。如果我将listS更改为vecS,一切都可以正常工作。(我使用的是boost 1.46.1和gcc 4.4.5)

#include <iostream>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graphviz.hpp>

int main(int argc, const char *argv[]) {
    boost::adjacency_list< boost::listS, boost::listS, boost::bidirectionalS > g;

    boost::write_graphviz(std::cout, g);

    return 0;
}
1个回答

6

write_graphviz需要vertex_id属性才能显示顶点标识符标签。使用listS作为顶点容器的adjacency_list不会自动提供此vertex_id属性。这种行为是合理的,因为在链接列表中,没有可用于唯一标识元素的键或索引。请记住,链接列表既不是随机访问序列也不是关联容器。

您可以提供自己的vertex_id属性getter,或者使用具有固有vertex_id属性的顶点容器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接