Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
5年前关闭。
我正在尝试用C ++代码解决此问题,但我希望没有罐装解决方案(作为提升方案)。
定义此---无向连接。假设有一个尺寸不确定的图形及其索引,存储在容器中:
现在假设具有:
现在我们选择删除3-Obj 3,我想拥有:
和
我也想通过索引访问这些对象。
我试图找到一个解决方案,但没有。
我需要对此元素做更多的事情:首先添加它们,并将它们的属性存储在对象中,对于连接也是如此,而无需花费任何费用。之后,我需要删除其中一些保留引用。
关于usign STL的任何想法中,哪一种是最简单,最有效的实现?
谢谢!
您可以通过调用来删除顶点
然后
图的边缘要复杂一些。您可以建立一个邻接表,它基本上是一个二维向量。
您只需确定删除第
想改善这个问题吗?更新问题,使其仅通过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