Graph 有人能解释为什么这是一个错误吗?
这是我代码的链接。如果我通过为每一行使用迭代器来简单地打印列表,它可以工作,但在循环中,它给出了分段错误Graph 有人能解释为什么这是一个错误吗?,graph,adjacency-list,Graph,Adjacency List,这是我代码的链接。如果我通过为每一行使用迭代器来简单地打印列表,它可以工作,但在循环中,它给出了分段错误 #include<bits/stdc++.h> using namespace std; list<int> *adj = new list<int>[5]; void addEdge(int v,int w) { adj[v].push_back(w); } int main() { addEdge(1,2); addEdge(2
#include<bits/stdc++.h>
using namespace std;
list<int> *adj = new list<int>[5];
void addEdge(int v,int w)
{
adj[v].push_back(w);
}
int main()
{
addEdge(1,2);
addEdge(2,3);
addEdge(3,4);
addEdge(4,5);
addEdge(5,2);
for(int i =1;i<6;i++)
{
list<int>::iterator j;
for(j = adj[i].begin();j!=adj[i].end();++j)
{
cout<<*j<<endl;
}
}
return 0;
}
#包括
使用名称空间std;
list*adj=新列表[5];
无效补遗(整数v,整数w)
{
形容词[v]。推回(w);
}
int main()
{
增编(1,2);
增编(2,3);
增编(3,4);
增编(4,5);
增编(5,2);
对于(int i=1;i在adj
上可用的数组的可接受索引范围是0..4
,而不是1..5
C
-类似于语言的语言倾向于使用基于偏移量的索引
外部for
循环超出了可用的索引范围。当您在内部for
循环中引用adj[5]
时,程序崩溃。您引用的是堆上不具有的地址
今后,请尝试在诸如gcc
之类的调试器中运行该程序,或使用诸如valgrind
之类的工具(它允许您跟踪内存使用和访问).在adj
上可用的数组的可接受索引范围是0..4
,而不是1..5
C
-类似于语言的语言倾向于使用基于偏移量的索引
外部for
循环超出了可用的索引范围。当您在内部for
循环中引用adj[5]
时,程序崩溃。您引用的是堆上不具有的地址
以后,请尝试在诸如gcc
之类的调试器中运行该程序,或使用诸如valgrind
之类的工具(它允许您跟踪内存使用和访问)