gpt4 book ai didi

c++ - 访问 BGL GraphProperty

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:19 25 4
gpt4 key购买 nike

我正在尝试使用 Boost 图形库访问 dot(graphviz) 格式的输入文件的图形标签。以下是图形类型的 typedef:

struct DotVertex {
std::string label;
};

struct DotEdge {
std::string label;
};

struct DotGraph {
std::string label;
};

typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS,
DotVertex, DotEdge, DotGraph> graph_t;

这就是我分配动态属性的方式:

  graph_t graphviz;

boost::dynamic_properties dp(boost::ignore_other_properties);

dp.property("label", boost::get(&DotGraph::label, graphviz));
dp.property("label", boost::get(&DotVertex::label, graphviz));
dp.property("label", boost::get(&DotEdge::label, graphviz));
std::ifstream ifs("sample.dot");
bool status = boost::read_graphviz(ifs, graphviz, dp);

编译器提示 DotGraph::label 的分配错误消息:

read_graph.cc:25:30: error: no matching function for call to 'get'   dp.property("label",       boost::get(&DotGraph::label,          graphviz));

有人可以指出在这种情况下读取图形标签的便捷方法是什么吗?谢谢!

最佳答案

设法使用在 read_graphviz() in Boost::Graph, pass to constructor 的第 3 步中找到的方法映射图形属性:

  boost::ref_property_map<graph_t *, std::string> dg_label(get_property(graphviz, &DotGraph::label));
dp.property("label", dg_label);

然后可以通过以下方式访问标签:

 std::cout<<get_property(graphviz, &DotGraph::label)<<std::endl;

关于c++ - 访问 BGL GraphProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39968648/

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