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;
}
4

1 回答 1

6

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

您要么必须提供自己的vertex_id属性获取器,要么使用具有固有vertex_id属性的顶点容器。

于 2011-04-26T18:45:37.927 回答