boost图形从txt文件循环创建图形

问题可能与以下方面有关:使用boost图库:如何通过从文件中读取边列表来创建图

然而,答案并没有真正帮助我。

我想用boost的adjacency_list类创建一个图。 数据位于带有两列的.txt文件中。

样品:

5 14
7 2
3 18
21 207
...

如果我能够做到以下几点,那将是非常棒的:

std::ifstream data("data.txt");
typedef adjacency_list<> Graph;
Graph g; 
while (data >> nodeA >> nodeB){
   add_edge(nodeA, nodeB, g);
} 

正如已经在这里讨论的那样:提高图形理解顶点创建行为

由于文章中讨论的原因不起作用。 我也经历了各种各样的例子,包括从boost图表纪录片:http://www.boost.org/doc/libs/1_36_0/libs/graph/example/family-tree-eg.cpp(这些都是“手“),

或者从“Boost Graph Library”第44页(我似乎无法编译)中找到。 因此,经过几天的试验和错误,并通过上述来源,我仍然无法弄清楚如何从文件中正确创建图形。

理想情况下,我想继续如下:

while (data >> nodeA >> nodeB){
   graph_traits<Graph>::vertex_descriptor *newVertex = new graph_traits<Graph>::vertex_descriptor;
   newVertex = vertex(nodeA,g); 
   graph_traits<Graph>::vertex_descriptor *otherVertex = new graph_traits<Graph>::vertex_descriptor;
   otherVertex = vertex(nodeB,g); 
   add_edge(newVertex, otherVertex,g);
}

类似于:www.boost.org/doc/libs/1_56_0/libs/graph/example/undirected_adjacency_list.cpp

但是我得到一个编译错误。

无论如何,我真的很感谢任何帮助,了解如何从txt文件创建图形。

预先感谢你们并祝福你们。


正如在此处已经讨论过的那样:提升图形理解顶点创建行为不适用于文章中讨论的原因

我没有看到眼前的问题。 除非你的顶点非常稀疏(例如,你有一个单一的节点ID,例如99,999,999,999,并且memery的使用会造成问题)。

否则,你也可以

  • 保留id -> vertex_descriptor的(bi)映射
  • 使用顶点属性文档
  • 链接地址: http://www.djcxy.com/p/51059.html

    上一篇: boost graph create graph in loop from txt file

    下一篇: map implemented in boost and how to change it