我使用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