我正在尝试创建一个2D数组来表示加权图。为了制作矩阵,我正在制作一个数组数组,如下面的构造函数所示。该矩阵将存储连接两个节点的边的权重。例如,图[1] [2]将存储点1和2之间边缘的权重。
Weighted_graph::Weighted_graph( int n ):vertices(n){
double **graph= new double *[vertices];
nodeDegree=new int [n];
edges=0;
for (int c=0;c<vertices;c++)
{
graph[c] = new double[vertices];
nodeDegree[c]=0;
for (int d=0;d<vertices;d++)
{
graph[c][d]=INF;
}
}
}
图表定义为double **graph;
这似乎有效,直到我尝试从程序崩溃的其他函数访问变量图。 (INF在代码中进一步正确定义)。
答案 0 :(得分:1)
我认为您正在引用正在构建的对象的图形成员。但是,图表在那里被声明为局部变量。
答案 1 :(得分:0)
这都是关于范围的,因为您在一个函数中可以重用变量名,但是这个只能在教师中访问。从构造函数中的图形前面删除双**。
答案 2 :(得分:0)
不要重新发明轮子。使用boost::multi_array。