2017-05-10 5 views
-6

Ich habe diesen Code für den graph.This Code geschrieben ist erfolgreich kompilieren, aber wenn ich es laufen zeigt Segmentation fault (core dumped)C++ Fehler: Segmentation fault (core dumped)

Dieser Code neben der grafischen Darstellung wird Drucken mit Printgraph function.How um diesen Fehler zu lösen?

class graph{ 
    public: 
     std::vector< std::vector<int> > list; 
     int n; 
     graph(int n){ 
      this->n=n; 
      list.resize(n); 
     } 
     void addEdge(int a,int b){ 
      list[a].push_back(b); 
      list[b].push_back(a); 
     } 
     void printGraph(){ 
      std::vector< std::vector<int> >::const_iterator vertex; 
      std::vector<int>::const_iterator adjacent; 
      int i=0; 
      for(vertex=list.begin();vertex != list.end() ; ++vertex) 
      { 
       std::cout<<"Adjacent of "<<i<" is : "; 
      for(adjacent = vertex->begin();adjacent != vertex->end();++adjacent){ 
       std::cout<<*adjacent<<" "; 
      } 
      i+=1;  
      std::cout<<"\n"; 
      } 
       } 
    }; 

main(){ 
    graph gh(5); 
    gh.addEdge(1,2); 
    gh.addEdge(1,3); 
    gh.addEdge(2,4); 
    gh.addEdge(2,5); 
    gh.addEdge(3,5); 
    gh.addEdge(4,5); 
    gh.addEdge(4,6); 
    gh.addEdge(5,6); 
    gh.printGraph(); 
    return 0; 
} 
+1

Haben Sie einen Debugger ausprobiert? –

+0

Was ist Debugger? –

+1

[Ein Debugger ist ein Software-Tool] (https://en.wikipedia.org/wiki/Debugger), mit dem Sie die Ausführung eines Programms steuern und dessen Status überprüfen können. – user4581301

Antwort

0

In Ihrem Haupt Sie gh(5) definieren, die den Vektor der Größe zuordnet 5 dann verwenden Sie Ihre addEdge Methode mit dem Parameter (5,6) die list[5] aber die fünf Listeneinträge sind list[0],list[1],list[2],list[3], und list[4] zuzugreifen versucht. Ich schätze also gh.addEdge(5,6) gibt den Segmentierungsfehler, wie es außerhalb der Reichweite Ihres Vektors ist.

+0

Vielen Dank! –

Verwandte Themen