使用基本类型标记的增强图边缘的简单点输出
Simple dot output for Boost Graph edges labelled with basic types
将捆绑属性与 Boost 图形库结合使用意味着创建代码以输出与 graphviz 兼容的点文件非常简单:
#include <boost/graph/graphviz.hpp>
struct Edge { int i; };
int main()
{
using namespace boost;
typedef adjacency_list<vecS, vecS, directedS, no_property, Edge> Graph;
Graph g;
add_edge(0, 1, {123}, g);
write_graphviz(std::cout, g, default_writer(),
make_label_writer(boost::get(&Edge::i,g)));
return 0;
}
在上面的代码中,edge 属性是使用名为 Edge
的结构定义的。此结构仅包含一个int
; 然后boost::get
make_label_writer
提供必要的PropertyWriter
。
如果我想对 edge 属性使用基本类型,例如 int
或 double
,我现在需要传递给 make_label_writer
的参数是什么?代码能否与上述代码保持可比性。例如,adjacency_list
可以声明为:
typedef adjacency_list<vecS, vecS, directedS, no_property, int> Graph;
您将直接处理边缘捆绑包。
对于捆绑属性,指向成员属性标记隐式应用于
edge_bundle_t
属性的值(或vertex_bundle_t
或graph_bundle_t
视情况而定;因此,您不希望对边/顶点/图形束使用相同的用户定义类型)。
住在科里鲁
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graphviz.hpp>
int main()
{
using namespace boost;
typedef adjacency_list<vecS, vecS, directedS, no_property, int> Graph;
Graph g;
add_edge(0, 1, 123, g);
write_graphviz(std::cout, g, default_writer(),
make_label_writer(boost::get(edge_bundle,g)));
}
输出:
digraph G {
0;
1;
0->1 [label=123];
}
相关文章:
- 无法将结构注册为增强几何体3D点
- 增强基于 XML class_id的反序列化
- 增强精神解析器规则以检测语句中的特殊结尾
- C++ 使用增强正则表达式库时断言崩溃
- 增强精神 X3:错误:在"..."中没有名为"大小"的类型
- 如何获取边缘窗口句柄 (HWND)?
- 提升如何在图形可视化中写入边缘的权重?
- 在 c++ 中使用 Tensorflow Lite 在边缘 TPU 上运行"mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite"时出现问题
- 分数背包边缘箱
- 如何包装(撰写)增强 hana 地图并访问括号运算符(运算符 [])?
- 有没有办法在C ++中检测汉字?(使用增强)
- 如何将增强MSM与增强信号结合使用?
- 应用程序无法找到铬边缘浏览器
- 如何使用增强::几何计算多边形的旋转固体体积?
- 复制部分文件的C++/增强方式
- 增强 ASIO 和串行端口异步读取
- 增强自定义权重到boost :: grid_graph中的边缘描述符
- 使用基本类型标记的增强图边缘的简单点输出
- 邻居边缘使用增强
- 增强BGL:边缘属性贴图