为什么我不能将 boost graph write_graphviz 与 OutEdgeList=listS 和 VertexList=listS 一起使用

发布于 2024-11-03 06:45:03 字数 418 浏览 0 评论 0原文

为什么我无法编译以下简单的应用程序。如果我将 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;
}

Why can't I compile the following simple app. If I changes listS to vecS every thing works just fine. (I'am using boost 1.46.1 and 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;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

初懵 2024-11-10 06:45:03

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

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

write_graphviz needs the vertex_id property to display vertex identifier labels. An adjacency_list that uses listS as the vertex container does not automatically provide this vertex_id property. This behavior makes sense, because in a linked list, there is no such thing as a key or index that can be used to uniquely identify an element. Remember that a linked list is neither a random-access sequence, nor an associative container.

You'll either have to supply your own vertex_id property getter, or use a vertex container that has an inherent vertex_id property.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文