c++ - 使用自定义 get 属性提升动态属性
问题描述
我正在尝试将 boost::dynamic 属性用于 Graphviz 输出的多个属性。
我熟悉自定义属性编写器(如何在显示多个属性的 graphviz 中打印图形),但我正在尝试对动态属性做同样的事情。我们如何使用以下代码中的动态属性编写上述边缘属性编写器?我想写关于重量和容量值的 if else 语句,如 if(weight <5 && capacity <5) then color = red 等等。
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);
解决方案
在此处查看一些选项:将 set/get 请求映射到 C++ 类/结构更改
您可以转换一个属性映射的结果,也可以完全使用功能属性映射。
转换值:
使用动态属性转换颜色属性的示例如下:Manually coloring of boost's graphs
功能图:
- 如果顶点属性是指针,如何使用 boost::graph dijkstra 算法?
- 我的偏好是使用成员函数并使用 transform_value_property_map 将其绑定,如上所示,例如Using boost graph library with a custom class for vertices
- 但这里有一个使用 boost dijkstra_shortest_paths 的例子
function_property_map
:can't extract (or find?) the path (path contains a cycle)
请注意,您还拥有make_constant_property_map
(例如Boost Dynamic Properties with Custom get property)
推荐阅读
- python - 如何将 Python 连接到 Microsoft Access 数据库文件?
- excel - 使用 VBA 在 XML 中设置多个命名空间
- chromecast - Is there any way to provide cookies for file-based media (mp4) in Chromecast CAF Receiver application
- python - 如何解决形状问题的 inverse_transform?
- c++ - dft(离散傅立叶变换)与 C++ 代码
- node.js - ES6:模块“猫鼬”没有默认导出
- javascript - 插入新元素时如何平滑移动?
- react-native - React Native TextInput 在字符串中时从状态中读取值。但是在数量上失败
- typescript - 如何在 TypeScript 中的文档元素值上设置 localStorage 值?
- json - JSON数据,属性有时是数组有时是对象