如何解决使用vector的vectors实现图数据结构时如何解决无输出问题?
#include <iostream>
#include <vector>
using namespace std;
class Graph{
int v;
vector<vector<int> > adj;
public:
Graph(int v){
this->v = v;
}
void addEdge(int x,int y){
adj[x].push_back(y);
adj[y].push_back(x);
}
void displayGraph(){
for(int i=0; i<this->v; i++){
cout << i << " --> ";
for(int j=0; j<adj[i].size(); j++){
cout << adj[i][j] << " ";
}
cout<<endl;
}
}
};
int main()
{
Graph g1(3);
g1.addEdge(0,1);
g1.addEdge(0,2);
g1.displayGraph();
return 0;
}
我想用 C++ 实现图形数据结构。因此,我创建了一个名为 Graph 的类并使用向量的向量来创建我的邻接列表。我使用 vector 是因为我可以在需要时动态分配。我还有一个构造函数来设置顶点数。然后我有名为 addEdge()
的成员函数。然后我有 displayGraph()
函数来显示我的图表。
问题是当我执行它时它会执行但它不提供任何输出。同样在终端中它显示了这一点。返回值不为 0。
Process exited after 3.137 seconds with return value 3221225477
Press any key to continue . . .
解决方法
Graph(int v) {
this->v = v;
adj.resize(v); //do this
}
您已声明 adj
,但 adj[x]
中的 addEdge()
不起作用,因为您试图访问尚未分配内存的内容。因此,向量下标将超出范围。
现在打印:
0 --> 1 2
1 --> 0
2 --> 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。