数据模型,图形库,c++

Data model, graph library, C++

本文关键字:c++ 图形库 数据模型      更新时间:2023-10-16

我正在创建一个c++库来实现图形算法。我正在考虑类"图"的适当表示。

有两种主要类型的图(有向/无向)和表示(列表/矩阵)。

我对算法没有问题…但是我想提出一个合适的和健壮的数据结构(包括类的继承序列,如果需要的话)。

目前我没有使用任何特殊的数据结构来表示图,静态方法有作为输入参数的关联,邻接…矩阵。

这样的类应该保留图的两种表示还是只有一种表示,并在两种表示之间使用转换函数?哪一种更好呢?

这个问题已经被很多人用不同的方法解决了。

在重新发明轮子之前,您可以看一下boost::graph。别忘了绑定属性

你这样做是为了上课还是作为学习练习?因为如果没有,正如你所指出的,这个问题已经解决过很多次了。当你浏览各种各样的解决方案时,你会意识到有些问题是你甚至没有想到的,比如:

  • 有向/无向图
  • 将用户数据与节点和边关联
  • 稀疏图与密集图
  • 大图与小图
  • 模板与非模板
  • 对其他包的依赖

等等…

试着看看一些最流行的实现:

https://stackoverflow.com/questions/2751826/which-c-graph-library-should-i-use