我正在尝试加载 gml 格式的简单图形(如果需要,我可以上传它)并计算其邻接列表并为每个顶点打印它。
这就是我正在做的事情:
int
main(int argc, char *argv[])
{
igraph_t g;
igraph_adjlist_t adjlist;
int num_edges, num_vertices;
FILE *ifile;
ifile = fopen("example.gml", "r");
igraph_read_graph_gml(&g, ifile);
fclose(ifile);
n_vertices = igraph_vcount(&g);
cout << "vertices: " << n_vertices << endl;
igraph_adjlist_init(&g, &adjlist, IGRAPH_OUT);
igraph_vector_t *vect_adj;
for (int n = 0; n < n_vertices; n++)
{
igraph_vs_t adc;
igraph_vs_adj(&adc, n, IGRAPH_OUT);
cout << "TYPE " << igraph_vs_type(&adc) << "\n";
vect_adj = (igraph_vector_t *)igraph_adjlist_get(&adjlist, n);
printf("\nvertex %d n adjs %ld\n", n, igraph_vector_size(vect_adj));
for (int f = 0; f < igraph_vector_size(vect_adj); f++)
{
cout << "node id " << (long int)igraph_vector_e(vect_adj, f) << endl;
long int neighbor = VECTOR(*vect_adj)[f];
cout << "nid " << neighbor << endl;
}
}
igraph_destroy(&g);
}
但是发生的情况是我总是得到 0 作为 id,就好像存在某种类型转换问题一样。我在这里做错了什么?
最佳答案
我想这里的要点是使用像 igraph_vector_int_t 这样的类型化 vector 以及类型化函数 igraph_vector_int_size
。
关于c++ - Igraph (C) 返回错误的顶点 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27544681/