gpt4 book ai didi

c++ - 如何在显示其中一个属性的情况下在 graphviz 中打印 boost 图?

转载 作者:可可西里 更新时间:2023-11-01 18:41:23 26 4
gpt4 key购买 nike

我在使用属性映射时看到了这样的示例,但在使用结构处理顶点和边时却看不到(我认为这称为“束”)。

我在邻接列表图中定义了顶点和边。

struct Vertex
{
string name;
int some_int;
};

struct Edge
{
double weight;
};

图的构造如下:

typedef boost::adjacency_list<boost::listS, boost::vecS, boost::directedS, Vertex, Edge> boost_graph;

我想以 Graphviz 格式打印这些对象的图表,以便我可以将其作为图像查看。但是,我不仅想要节点和边。我还希望顶点上的属性 name 和边缘上的 weight 出现在图像中。我该怎么做?

最佳答案

我只是偶然发现了这个问题。虽然它有一个公认的答案,但我想我也会添加我的版本。

您正在使用 bundled property在你的图表中。从捆绑属性中获取属性映射的正确方法是使用 boost::get。所以你可以这样做:

boost::write_graphviz(std::cout, your_graph,
boost::make_label_writer(boost::get(&Vertex::name, your_graph)),
boost::make_label_writer(boost::get(&Edge::weight, your_graph)),
);

your_graph 是您创建的图形对象。

关于c++ - 如何在显示其中一个属性的情况下在 graphviz 中打印 boost 图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9181183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com