Заголовочный файл о «ориентированных графах» дает ошибку сегментации - PullRequest
0 голосов
/ 23 марта 2019

Я использую Code :: Blocks и пытаюсь реализовать файл заголовка, который имеет методы, связанные с «графиком», такие как создание списка смежности и печать их.Но, к сожалению, это дает ошибку сегментации.

Я использую «Вектор векторов» для моих списков смежности.Теперь странно Code :: Blocks не выдает никаких предупреждений или ошибок, когда я компилирую свой код (и при этом он не работает), но другой компилятор выдает ошибку сегментации.

(PS Я знаю, что я должен только создавать прототипы методов в моем заголовочном файле и использовать отдельный исходный файл для их записи, но по какой-то причине это не работает. Пожалуйста, потерпите меня)

Мясомой заголовочный файл: (пропущен краткий список включений и пространств имен)

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;
}

Он должен печатать ориентированный граф, но ничего не делает.(Code :: Blocks выдает 0 предупреждений и 0 ошибок. Отдельный онлайн-компилятор выдал ошибку seg. Но код не работает)

Редактировать: Кто-то запросил включения, вот они:

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

//my header file code

#endif
...