Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        5年前关闭。
                                                                                            
                
        
我正在尝试用C ++代码解决此问题,但我希望没有罐装解决方案(作为提升方案)。

定义此---无向连接。假设有一个尺寸不确定的图形及其索引,存储在容器中:

 1 - Obj1
 2 - Obj2
 3 - Obj3
 4 - Obj4
 5 - Obj5
 ...


现在假设具有:

   1 --- 5
   2 --- 3
   4 --- 2
   ...


现在我们选择删除3-Obj 3,我想拥有:

1 - Obj1
2 - Obj2
3 - Obj4
4 - Obj5
...




1 --- 4
3 --- 2
...


我也想通过索引访问这些对象。
我试图找到一个解决方案,但没有。

我需要对此元素做更多的事情:首先添加它们,并将它们的属性存储在对象中,对于连接也是如此,而无需花费任何费用。之后,我需要删除其中一些保留引用。

关于usign STL的任何想法中,哪一种是最简单,最有效的实现?

谢谢!

最佳答案

如果要使事情简单,只需对顶点使用向量。 V是顶点的类型。

std::vector<V> vertex;
vertex.push(Obj1);
vertex.push(Obj2);
vertex.push(Obj3);
vertex.push(Obj4);
vertex.push(Obj5);


您可以通过调用来删除顶点

vertex.erase(vertex.begin()+2); //delete the third entry


然后vertex[2]将是Obj4而不是Obj3

图的边缘要复杂一些。您可以建立一个邻接表,它基本上是一个二维向量。

std::vector<std::vector<V> > adjacency_list;


您只需确定删除第i个顶点,然后删除第i行,i的每个条目,并将所有大于i的条目减少一个。

关于c++ - 带有订购的图表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27318127/

10-15 04:50