我需要用C ++编写一个图形,我有一点问题。根据用户选择的矩阵或列表,我的图表应该是有向或无向,加权或未加权的。从列表图中区分矩阵并不是什么大问题,因为它是两个不同的类,我对其他参数有一些问题。区分它们最明显的方法是制作两个bool
变量,并在每次添加和删除顶点时检查它们。它非常明显且易于理解,但我怀疑它的效率,因为每次添加或删除顶点时,我都必须执行额外的if
。我也可以为它编写子类,但我很怀疑它是否值得。
每个库都可以使用,如果它不代表图形本身。
答案 0 :(得分:3)
对于有向和无向最佳情况,使用bool变量作为图形,但是您可以假设图形是加权和定向的,但对于无向边缘,从a→b添加一条边,从b→a添加一条边。此外,如果没有权重函数,则将其权重设置为1
。
但是如果你在寻找图形库,它取决于你的编程语言,但是我建议graph boost library完全用c ++实现,而太多其他人用其他语言部分实现它。