Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人知道为什么我的代码中会出现这种分段错误吗? 我在C++中实现了一个图,当我尝试打印邻接表时,我有一个分割错误,有人知道为什么吗?我做错了什么?对不起,英语不好 #include <iostream> #include <vector> #include <list> #include <string> using namespace std; class Vertex; class Edge{ public: Edge(Vertex *org, Vertex *dest, int weight){ origem = org; destino = dest; peso = weight; } Vertex* getOrigem(){return origem;} Vertex* getDestino(){return destino;} int getPeso(){return peso;} private: Vertex* origem; Vertex* destino; int peso; }; class Vertex{ public: Vertex(string id){ name = id; } void addEdge(Vertex *v, int peso){ Edge newEdge(this, v, peso); edges.push_back(newEdge); } void printEdges(){ cout << name << ":" << endl; for (int i = 0; i < edges.size(); i++) { Edge e = edges[i]; cout << e.getDestino()->getName() << " - " << e.getPeso() << endl; } cout << endl; } string getName(){return name;} vector<Edge> getEdges(){return edges;} private: string name; vector<Edge> edges; }; class Graph{ public: Graph(){ degree = 0; } void insert(Vertex* v){ vertices.push_back(v); degree++; } int getDegree(){return degree;} void printGraph(){ for (int i = 0; i < vertices.size(); i++) vertices[i]->printEdges(); } list<Vertex*> adj(Vertex* v){ vector<Edge> edges = v->getEdges(); cout << "oi\n"; list<Vertex*> adj; int nEdges = edges.size(); for(int i = 0; i < nEdges; i++) adj.push_back(edges.at(i).getDestino()); cout << "k\n"; } Vertex* getVertex(int i){return vertices.at(i);} private: vector<Vertex*> vertices; int degree; }; int main(){ list<list<Vertex*> > listAdj; Graph g; Vertex v1 = Vertex("Seattle"); Vertex v2 = Vertex("Portland"); Vertex v3 = Vertex("Everett"); Vertex v4 = Vertex("Lynnwood"); Vertex v5 = Vertex("Northgate"); Vertex v6 = Vertex("Bellevue"); Vertex v7 = Vertex("Arlington"); Vertex v8 = Vertex("Bellingham"); Vertex *vp1 = &v1; Vertex *vp2 = &v2; Vertex *vp3 = &v3; Vertex *vp4 = &v4; Vertex *vp5 = &v5; Vertex *vp6 = &v6; Vertex *vp7 = &v7; Vertex *vp8 = &v8; v1.addEdge(vp2, 100); v1.addEdge(vp6, 20); v2.addEdge(vp1, 100); v3.addEdge(vp1, 30); v3.addEdge(vp4, 10); v3.addEdge(vp7, 20); v4.addEdge(vp5, 15); v5.addEdge(vp1, 10); v6.addEdge(vp1, 20); v8.addEdge(vp7, 45); g.insert(vp1); g.insert(vp2); g.insert(vp3); g.insert(vp4); g.insert(vp5); g.insert(vp6); g.insert(vp7); g.insert(vp8); cout << "Cheguei aqui" << endl; for(int i = 0; i < g.getDegree(); i++) listAdj.push_back(g.adj(g.getVertex(i))); int k = 0; cout << "Cheguei aqui" << endl; for(list<Vertex*> i: listAdj){ cout << g.getVertex(k)->getName() << ":" << endl; list<Vertex*>::const_iterator j = i.begin(); for(; j != i.end(); j++){ Vertex *v = *j; cout << v->getName() << endl; } k++; } g.printGraph(); return 1; }_C++_Memory_Graph - Fatal编程技术网

有人知道为什么我的代码中会出现这种分段错误吗? 我在C++中实现了一个图,当我尝试打印邻接表时,我有一个分割错误,有人知道为什么吗?我做错了什么?对不起,英语不好 #include <iostream> #include <vector> #include <list> #include <string> using namespace std; class Vertex; class Edge{ public: Edge(Vertex *org, Vertex *dest, int weight){ origem = org; destino = dest; peso = weight; } Vertex* getOrigem(){return origem;} Vertex* getDestino(){return destino;} int getPeso(){return peso;} private: Vertex* origem; Vertex* destino; int peso; }; class Vertex{ public: Vertex(string id){ name = id; } void addEdge(Vertex *v, int peso){ Edge newEdge(this, v, peso); edges.push_back(newEdge); } void printEdges(){ cout << name << ":" << endl; for (int i = 0; i < edges.size(); i++) { Edge e = edges[i]; cout << e.getDestino()->getName() << " - " << e.getPeso() << endl; } cout << endl; } string getName(){return name;} vector<Edge> getEdges(){return edges;} private: string name; vector<Edge> edges; }; class Graph{ public: Graph(){ degree = 0; } void insert(Vertex* v){ vertices.push_back(v); degree++; } int getDegree(){return degree;} void printGraph(){ for (int i = 0; i < vertices.size(); i++) vertices[i]->printEdges(); } list<Vertex*> adj(Vertex* v){ vector<Edge> edges = v->getEdges(); cout << "oi\n"; list<Vertex*> adj; int nEdges = edges.size(); for(int i = 0; i < nEdges; i++) adj.push_back(edges.at(i).getDestino()); cout << "k\n"; } Vertex* getVertex(int i){return vertices.at(i);} private: vector<Vertex*> vertices; int degree; }; int main(){ list<list<Vertex*> > listAdj; Graph g; Vertex v1 = Vertex("Seattle"); Vertex v2 = Vertex("Portland"); Vertex v3 = Vertex("Everett"); Vertex v4 = Vertex("Lynnwood"); Vertex v5 = Vertex("Northgate"); Vertex v6 = Vertex("Bellevue"); Vertex v7 = Vertex("Arlington"); Vertex v8 = Vertex("Bellingham"); Vertex *vp1 = &v1; Vertex *vp2 = &v2; Vertex *vp3 = &v3; Vertex *vp4 = &v4; Vertex *vp5 = &v5; Vertex *vp6 = &v6; Vertex *vp7 = &v7; Vertex *vp8 = &v8; v1.addEdge(vp2, 100); v1.addEdge(vp6, 20); v2.addEdge(vp1, 100); v3.addEdge(vp1, 30); v3.addEdge(vp4, 10); v3.addEdge(vp7, 20); v4.addEdge(vp5, 15); v5.addEdge(vp1, 10); v6.addEdge(vp1, 20); v8.addEdge(vp7, 45); g.insert(vp1); g.insert(vp2); g.insert(vp3); g.insert(vp4); g.insert(vp5); g.insert(vp6); g.insert(vp7); g.insert(vp8); cout << "Cheguei aqui" << endl; for(int i = 0; i < g.getDegree(); i++) listAdj.push_back(g.adj(g.getVertex(i))); int k = 0; cout << "Cheguei aqui" << endl; for(list<Vertex*> i: listAdj){ cout << g.getVertex(k)->getName() << ":" << endl; list<Vertex*>::const_iterator j = i.begin(); for(; j != i.end(); j++){ Vertex *v = *j; cout << v->getName() << endl; } k++; } g.printGraph(); return 1; }

有人知道为什么我的代码中会出现这种分段错误吗? 我在C++中实现了一个图,当我尝试打印邻接表时,我有一个分割错误,有人知道为什么吗?我做错了什么?对不起,英语不好 #include <iostream> #include <vector> #include <list> #include <string> using namespace std; class Vertex; class Edge{ public: Edge(Vertex *org, Vertex *dest, int weight){ origem = org; destino = dest; peso = weight; } Vertex* getOrigem(){return origem;} Vertex* getDestino(){return destino;} int getPeso(){return peso;} private: Vertex* origem; Vertex* destino; int peso; }; class Vertex{ public: Vertex(string id){ name = id; } void addEdge(Vertex *v, int peso){ Edge newEdge(this, v, peso); edges.push_back(newEdge); } void printEdges(){ cout << name << ":" << endl; for (int i = 0; i < edges.size(); i++) { Edge e = edges[i]; cout << e.getDestino()->getName() << " - " << e.getPeso() << endl; } cout << endl; } string getName(){return name;} vector<Edge> getEdges(){return edges;} private: string name; vector<Edge> edges; }; class Graph{ public: Graph(){ degree = 0; } void insert(Vertex* v){ vertices.push_back(v); degree++; } int getDegree(){return degree;} void printGraph(){ for (int i = 0; i < vertices.size(); i++) vertices[i]->printEdges(); } list<Vertex*> adj(Vertex* v){ vector<Edge> edges = v->getEdges(); cout << "oi\n"; list<Vertex*> adj; int nEdges = edges.size(); for(int i = 0; i < nEdges; i++) adj.push_back(edges.at(i).getDestino()); cout << "k\n"; } Vertex* getVertex(int i){return vertices.at(i);} private: vector<Vertex*> vertices; int degree; }; int main(){ list<list<Vertex*> > listAdj; Graph g; Vertex v1 = Vertex("Seattle"); Vertex v2 = Vertex("Portland"); Vertex v3 = Vertex("Everett"); Vertex v4 = Vertex("Lynnwood"); Vertex v5 = Vertex("Northgate"); Vertex v6 = Vertex("Bellevue"); Vertex v7 = Vertex("Arlington"); Vertex v8 = Vertex("Bellingham"); Vertex *vp1 = &v1; Vertex *vp2 = &v2; Vertex *vp3 = &v3; Vertex *vp4 = &v4; Vertex *vp5 = &v5; Vertex *vp6 = &v6; Vertex *vp7 = &v7; Vertex *vp8 = &v8; v1.addEdge(vp2, 100); v1.addEdge(vp6, 20); v2.addEdge(vp1, 100); v3.addEdge(vp1, 30); v3.addEdge(vp4, 10); v3.addEdge(vp7, 20); v4.addEdge(vp5, 15); v5.addEdge(vp1, 10); v6.addEdge(vp1, 20); v8.addEdge(vp7, 45); g.insert(vp1); g.insert(vp2); g.insert(vp3); g.insert(vp4); g.insert(vp5); g.insert(vp6); g.insert(vp7); g.insert(vp8); cout << "Cheguei aqui" << endl; for(int i = 0; i < g.getDegree(); i++) listAdj.push_back(g.adj(g.getVertex(i))); int k = 0; cout << "Cheguei aqui" << endl; for(list<Vertex*> i: listAdj){ cout << g.getVertex(k)->getName() << ":" << endl; list<Vertex*>::const_iterator j = i.begin(); for(; j != i.end(); j++){ Vertex *v = *j; cout << v->getName() << endl; } k++; } g.printGraph(); return 1; },c++,memory,graph,C++,Memory,Graph,你错过了返回;在图的末尾::adj

你错过了返回;在图的末尾::adj