【问题标题】:Boost Dynamic Properties with Custom get property使用自定义 get 属性提升动态属性
【发布时间】:2019-07-19 02:27:14
【问题描述】:

我正在尝试将 boost::dynamic 属性用于 Graphviz 输出的多个属性。

我熟悉自定义属性编写器 (How to print a graph in graphviz with multiple properties displayed),但我正在尝试对动态属性做同样的事情。我们如何使用以下代码中的动态属性编写上述边缘属性编写器?我想写关于重量和容量值的 if else 语句,如 if(weight

boost::dynamic_properties dp/*(ignore_other_properties)*/;
dp.property("node_id", get(&vert::name, g));
dp.property("color", get(??,g));
write_graphviz_dp(std::cout, g, dp);

【问题讨论】:

  • 嗯。你希望它有什么颜色?链接的答案中没有提到它。如果有的话,诀窍可能完全相同:get(&edge::color, g)(假设edge 有一个名为color 的成员)
  • 我已编辑问题以提及该部分。 Edge 有重量和容量作为它的成员,我想使用这两个属性来编写一个 if-else 块来分配输出图中的颜色。在链接的答案中,我可以在 operator() 函数中做到这一点,但我们如何使用 dp.property()?

标签: c++ boost boost-graph


【解决方案1】:

在此处查看一些选项:map set/get requests into C++ class/structure changes

您可以转换一个属性映射的结果,也可以完全使用功能属性映射。

转换值:

这里是使用动态属性转换颜色属性的示例:Manually colouring of boost's graphs

功能图:

请注意,您还有make_constant_property_map(例如Boost Dynamic Properties with Custom get property

【讨论】:

  • 谢谢。这完全符合我试图解决的情况。我不知道 make_transform_value_property_map。
猜你喜欢
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
相关资源
最近更新 更多