C++ Can';在igraph上生成igraph_度_序列_对策

C++ Can';在igraph上生成igraph_度_序列_对策,c++,c,igraph,C++,C,Igraph,我想使用igraph_degree_sequence_game igraph图形生成器生成一个网络。igraph C库上的示例在我的计算机上运行良好,但是如果我更改为其他一些简单的度分布(请参见下面的代码),我会得到以下错误: Error at games.c:830 :degree sequence game (simple), Out of memory. 我想这会给我一个有4个节点的无向网络,每个节点有3个邻居。我不知道我哪里做错了。谢谢你的帮助和回应 #include <igra

我想使用igraph_degree_sequence_game igraph图形生成器生成一个网络。igraph C库上的示例在我的计算机上运行良好,但是如果我更改为其他一些简单的度分布(请参见下面的代码),我会得到以下错误:

Error at games.c:830 :degree sequence game (simple), Out of memory.
我想这会给我一个有4个节点的无向网络,每个节点有3个邻居。我不知道我哪里做错了。谢谢你的帮助和回应

#include <igraph.h>

int main() {
  igraph_t g;
  igraph_vector_t outdeg, indeg, vec;
  igraph_bool_t is_simple;

  igraph_vector_init_real(&outdeg, 4,3,3,3,3);
  igraph_vector_init(&vec, 0);

  /* checking the simple method, undirected graphs */
  igraph_degree_sequence_game(&g, &outdeg, 0, IGRAPH_DEGSEQ_SIMPLE);
  if (igraph_is_directed(&g) || igraph_vcount(&g) != 4)
  return 1;
  if (igraph_degree(&g, &vec, igraph_vss_all(), IGRAPH_OUT, 1))
  return 2;
  igraph_vector_print(&vec);
  igraph_destroy(&g);


  igraph_vector_destroy(&vec);
  igraph_vector_destroy(&outdeg);
  igraph_vector_destroy(&indeg);

  return 0;
}
#包括
int main(){
igraph_t g;
igraph_vector_t outdeg,indeg,vec;
图是简单的;
igraph_vector_init_real(&outdeg,4,3,3,3);
igraph_vector_init(&vec,0);
/*检查简单方法,无向图*/
igraph_degree_sequence_game(&g,&outdeg,0,igraph_DEGSEQ_SIMPLE);
如果(igraph_是有向(&g)| igraph_vcount(&g)!=4)
返回1;
if(igraph_degree(&g,&vec,igraph_vss_all(),igraph_OUT,1))
返回2;
igraph_vector_print(&vec);
IGU破坏(&g);
igraph_vector_destroy(&vec);
igraph_vector_destroy(&outdeg);
igraph_vector_destroy(&indeg);
返回0;
}

我想应该更新示例,因为
igraph\u vector\u init\u real
不是公共API的一部分。无论如何,问题是(顾名思义),这个函数需要实(即双)字面值。也就是说,正确的使用方法是

igraph_vector_init_real(&outdeg, 4, 3.0, 3.0, 3.0, 3.0);

顺便说一句,代码中的另一个错误是调用
indeg
上的
igraph\u vector\u destroy
,该错误从未初始化。这可能会也可能不会生成运行时错误。

非常感谢!这真的解决了我的问题!