有关“有向图”的头文件给出了分段错误

时间:2019-03-23 18:29:35

标签: c++ stl codeblocks directed-graph

我使用Code :: Blocks,并尝试实现具有与“图”相关的方法的头文件,如创建邻接表并打印它们。但不幸的是,它带来了细分错误。

我在邻接列表中使用“向量的向量”。现在奇怪的是,我编译代码时Code :: Blocks不给出任何警告或错误(也不起作用),但是另一个编译器给出了分段错误。

(P.S。我知道我只应该在头文件中使用原型方法,并使用单独的源文件将它们写出来,但是由于某些原因它无法正常工作。请耐心等待)

我的头文件的内容:(省略了简明的包含和命名空间)

struct Edge{
    int src,dest;
};

class Graph{
    public:
        vector<vector<int>> adjList;
        int V,E;
        Graph(int,int);
        void dirGraph(vector<Edge> edges);
        void printGraph();
};

Graph::Graph(int V,int E)
{
    this->V = V;
    this->E = E;
}

void Graph::dirGraph(vector<Edge> edges)
{
    adjList.resize(V);
    for(auto edge:edges){
        adjList[edge.src].push_back(edge.dest);
    }
}

void Graph::printGraph(){
    for(int i=0 ; i<V ; ++i){
        cout << i;
        for(auto x:adjList[i]){
            cout << " -> " << x;
        }
        cout << endl;
    }
}

主文件:

#include <iostream>
#include <vector>
#include "Graph.h"

using namespace std;

int main(){
    vector<Edge> edges =
    {
      {0,1},{1,2},{2,0},{2,1},{3,2},{4,5},{5,4}
    };
    Graph g1(5,7);
    g1.dirGraph(edges);
    g1.printGraph();
    return 0;
}

它应该打印有向图,但不执行任何操作。 (代码:: Blocks给出0警告和0错误。一个单独的在线编译器给出了seg错误。但是该代码不起作用)

编辑:有人要求包含,这里是:

#ifndef GRAPH_H_INCLUDED
#define GRAPH_H_INCLUDED
#include <vector>
#include <iostream>
using namespace std;

//my header file code

#endif

0 个答案:

没有答案