C++ 用于将矩阵转换为图形的Boost适配器类

C++ 用于将矩阵转换为图形的Boost适配器类,c++,boost-graph,C++,Boost Graph,我需要找出2D数组中两个节点之间的最短路径。为此,我想使用boost图形库。但是boost图形库接受图形作为输入。所以我需要将2D数组转换为图形。我还听说,图形的适配器类矩阵可以用于此目的。但当我经历这些时,我也不能清楚地理解这一点。我也找不到这方面的例子。所以,谁能给我一个关于如何使用适配器代码将矩阵转换为图形的示例代码 谢谢请看一看注释中链接到的一段代码 现在似乎没有比迭代矩阵并向图中添加边更简单的方法了 for(i = 0; i < nrows; ++i) for(j = 0

我需要找出2D数组中两个节点之间的最短路径。为此,我想使用boost图形库。但是boost图形库接受图形作为输入。所以我需要将2D数组转换为图形。我还听说,图形的适配器类矩阵可以用于此目的。但当我经历这些时,我也不能清楚地理解这一点。我也找不到这方面的例子。所以,谁能给我一个关于如何使用适配器代码将矩阵转换为图形的示例代码

谢谢

请看一看注释中链接到的一段代码

现在似乎没有比迭代矩阵并向图中添加边更简单的方法了

for(i = 0; i < nrows; ++i)
    for(j = 0; j < ncols; ++j)  //of course in a graph nrows should equal ncols.
        if(matrix[i][j] != 0){
            add_edge(i,j,g);
        }
for(i=0;i
如果您有一个vecS顶点图(整数顶点描述符)

该类目前未在boost中记录。在查看了实现之后,这似乎是为了通过参考
nnz
方法(非零元素的数量)来判断

虽然矩阵适配器中没有说明,但与作者相同的和声明:

这个模块要求C++编译器支持部分 graph_traits类的专门化,因此这是不可移植的 到VC++

因此,即使您让这些未记录的适配器工作,它们也不会使用VC++进行编译

你只需要迭代你的矩阵并手工添加边(据我所知)