【发布时间】:2018-04-15 20:51:43
【问题描述】:
这是我定义图表的方式,它特定于我正在处理的问题。
class Vertex;
Class Edge
{
Vertex *org;
Vertex *dest;
int traverse_time;
};
struct Vertex{
int id;
vector<Edge> edges;
int weight;
};
struct Graph{
vector<Vertex> vertices;
};
这就是我添加顶点的方式
Graph* g1=new Graph;
Vertex* newvertex = addVertex(0);
graph1->vertices.push_back(*newvertex);
添加顶点功能可以正常工作,但如果您需要,仍然可以
Vertex* addVertex(int id){
Vertex*newVertex = new Vertex;
newVertex->id=id;
newVertex->weight=0;
return newVertex;}
当我尝试向这些顶点添加边时遇到问题。这就是我一直在做的事情
org=&(g1->vertices[0]);
dest=&(g1->vertices[1]);
Edge* newedge=addRoad(org,dest,1);
org->edges.push_back(*newedge);
dest->edges.push_back(*newedge);
addEdge函数定义如下:
Edge* addedge(Vertex* j_id1,Vertex* j_id2,int t)
{
Edge *newedge =new Edge;
newedge->org=j_id1;
newedge->dest=j_id2;
newedge->traverse_time=t;
return newedge;
}
函数在org->edges.push_back(*newedge);之前停止工作
【问题讨论】:
-
Vertex* new = addVertex(0);不应该编译。另外,停止工作是什么意思? -
我的错,那是
Vertex *newvertex=addVertex(0);尝试插入边时程序退出。 -
有报错吗?
-
不,没有给出错误。当我尝试向我的图形添加边时,exe 文件停止工作。我注释掉了添加边的部分,程序的其余部分工作正常。
-
这行是问题
org->edges.push_back(*newedge);我猜
标签: c++ vector graph adjacency-list