Я использую 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