我的图形 ADT 的 addVertex 方法在通过 for 循环时将接受普通整数但不接受整数,这是为什么?



我正在做一个图形ADThttps://github.com/atomind2005/Vectors-Graph-Theory-Implementation当我运行graphic.addVertex(0(、graphic.add顶点(1(等一直到graphic.addVertex(9(时,它是有效的,但当我运行时

for(int x =0; x < 10; x++){
graph.addVertex(x);
}

无论for循环中的数字有多大,它总是会抛出分段错误。我不知道为什么会发生这种事,请帮忙感谢

我无法重现该问题。

此测试通过

void testforloop()
{
Graph graph;
// Test adding vertices using for loop https://stackoverflow.com/a/70316586/16582
std::cout << "nfor loop testn";
for (int x = 0; x < 100; x++)
{
graph.addVertex(x);
}
// 99 vertices expected because the vertex '0' is rejected
if( graph.returnVertices() != 99 )
throw std::runtime_error("for loop test failed");
std::cout << "for loop test PASSEDn";
}

注:

1在您的任何代码中都没有一条注释。这将很难维持!

2每次添加节点时搜索整个图对于大型图来说将非常缓慢。此代码将不适用于超过100个节点的图形。

3在向量上执行insert也是非常低效的。假设您有一个包含100个节点的图,并决定插入一个索引值为1的节点。这需要插入到矢量的开头,图形中的每个其他节点都必须移动。

最新更新