Boost.Graph - 有 2 个简单的类和一个类 - 数据类型如何创建图表?

Posted

技术标签:

【中文标题】Boost.Graph - 有 2 个简单的类和一个类 - 数据类型如何创建图表?【英文标题】:Boost.Graph - having 2 simple classes and one class - datatype how to create a graph? 【发布时间】:2011-04-21 07:13:37 【问题描述】:

所以我有一些简单的生成器类,它与this 类似的数据类型this(指针和长度)和类似this 的简单服装数据类型渲染器。如何创建一个图表来帮助我将生成的数据传递到我的渲染器中?

目前我这样做是为了将我的 Char Ptr 传递给数据生成器,然后将结果传递给渲染器:

     renderer->renderCastedData(producer->updateData(CharPtr));

但我很想看看是否可以使用 Boost Graph 将表示类的数据映射到某些类作为某些函数的输入并返回该函数的某些其他类?通常有一个“图表”,我希望能够调用Graph(MyInstanceOfMyDatatype) 并让我的价值(以最小的应对)从一个图形元素传递到另一个?

这是一个非常简单的示例,所以它可能看起来图表是多余的,但我想要在我的类之间传递自动值的图表,以防例如有一个生成器和 N 个渲染器 - 在这里我想要图表来帮助我向除第一个渲染器之外的所有渲染器提供我的类的 N-1 个副本的示例。

【问题讨论】:

【参考方案1】:

您正在寻找的似乎是一个框架,它允许您将简单的生产者-消费者模式扩展到消费者网格中,同时由单个生产者提供数据。

这不是 Boost.Graph 提供的。 Boost.Graph 是在一组图概念上定义的抽象过程(算法)的集合。它假定您已经拥有一个具有图形属性(主要是顶点和边,以及它们之上的迭代器)的数据结构,并允许您将其算法(最大流量、最短距离等)应用到它。此外,它还附带了一些简单的图形模型(邻接矩阵/列表),以防您还没有图形类。

您的用例类似于 Unix tee 命令。虽然我不知道您正在使用的特定库的 tee 实现,但实现 TeeConsumer 作为其所有注册子消费者的生产者通常并不太复杂。

这是我的一位同事的blog post,关于为 Qt 的 QIODevice 实现一个 tee 设备,这可能会帮助您入门。

【讨论】:

以上是关于Boost.Graph - 有 2 个简单的类和一个类 - 数据类型如何创建图表?的主要内容,如果未能解决你的问题,请参考以下文章

Boost::graph Dijkstra : 最初填充队列

python类和函数的区别

13.boost最小生成树 kruskal_min_spainning_tree

删除顶点并再次添加它会导致 boost::graph 崩溃?

图的割集,Boost Graph Library

如何使用 Boost Graph Library 创建 named_graph?