C++ 在C++;?

C++ 在C++;?,c++,graph,adjacency-list,C++,Graph,Adjacency List,我希望实现一个恒定的、无序的、未加权的稀疏图(即边不移动)。但是,我将进行大量顶点交换操作,从而改变顶点的顺序 例如,一种方法是使用无序_集向量+邻接列表结构: 0: 1 2 3 1: 0 2 2: 0 1 3: 0 交换0和3: 0: 3 1: 3 2 2: 3 1 3: 1 2 0 什么是C++中最好的实现? 也许吧 它有几个实现,您可以为每个顶点指定多个参数。进一步的调查留给学生作为练习。调查。它可能会满足您的需要,但如果不能满足您的需要,那么在您开始尝试使用自己的文档之前,它的文档可

我希望实现一个恒定的、无序的、未加权的稀疏图(即边不移动)。但是,我将进行大量顶点交换操作,从而改变顶点的顺序

例如,一种方法是使用无序_集向量+邻接列表结构:

0: 1 2 3
1: 0 2
2: 0 1
3: 0
交换0和3:

0: 3
1: 3 2
2: 3 1
3: 1 2 0
<>什么是C++中最好的实现? 也许吧

它有几个实现,您可以为每个顶点指定多个参数。进一步的调查留给学生作为练习。

调查。它可能会满足您的需要,但如果不能满足您的需要,那么在您开始尝试使用自己的文档之前,它的文档可能是了解该主题的一个很好的起点

编辑:如果您希望使用稀疏图,那么该版本可能是您首先要研究的实现。请注意,您可以通过更改用于实现它的底层数据结构(通过模板参数)来调整boost邻接列表图的性能特征


编辑:关于您描述的顶点交换,最简单的方法可能是设置一个顶点类型,该类型的顶点可以保持在原位,但其属性可以轻松地与另一个顶点交换。该机制是实现这一点的一种方式。

另一个因素是图的稀疏程度。请先学习图形的程序表示,然后谷歌就如何在C++中完成。您的问题足够具体,在我看来是一个好问题,但是这些信息一点也不晦涩,您可以自己学习。很抱歉,我忘了提到图表是稀疏的。我认为使用boost可能有点过火,而且它(很容易)不支持交换模式。一点也不,boos::graph是一个很好的解决方案,库中有很多顶点操作可用,所以我想一旦你掌握了它,你会感到惊讶。