错误:请求“v”中的成员“stor_begin”,该成员的非类类型为“igraph_vector_t*”

error: request for member ‘stor_begin’ in ‘v’, which is of non-class type ‘igraph_vector_t*’

本文关键字:成员 类型 igraph vector stor 错误 请求 begin      更新时间:2023-10-16

好吧,我想这样做,

"...由于 vt 是 Stl_To_Igraph_vector_ptr_t 内在堆栈上分配的向量(即您只是将其声明为局部变量并且没有使用 malloc 分配它),因此一旦函数返回,它就会不复存在。您在igraph_vector_ptr_t中存储了一个指向 vt 的指针,但当您退出函数时,该指针将变为无效,这就是您稍后收到错误的原因。你必须使vt成为igraph_vector_ptr_t,如果你想让它比转换函数活得更久,就使用malloc来分配它。它被张贴在 使用 std::vector 与 Igraph, 我不知道如何填充向量 v en 下一个代码,

#include <igraph.h> 
#include <stdlib.h>
int print_vector(igraph_vector_t *v) {
  long int i, l=igraph_vector_size(v);
  for (i=0; i<l; i++) {
    printf(" %li", (long int) VECTOR(*v)[i]);
  }
  printf("n");
}
int main() {

  igraph_vector_ptr_t vecs;
  long int i;
  igraph_vector_ptr_init(&vecs, 3);
  for (i=0; i<igraph_vector_ptr_size(&vecs); i++) {
    VECTOR(vecs)[i] = calloc(1, sizeof(igraph_vector_t));
    igraph_vector_init( (igraph_vector_t*)VECTOR(vecs)[i], 10);
  }
  igraph_vector_t *v;
  v=(igraph_vector_t*)malloc(sizeof(igraph_vector_t));
  igraph_vector_init(v, 10);
   VECTOR(v)[0]=1;//-------??????????

  igraph_vector_ptr_set(&vecs,0,v);

  for (i=0; i<igraph_vector_ptr_size(&vecs); i++) {
    print_vector( (igraph_vector_t*)VECTOR(vecs)[i]);
    igraph_vector_destroy( (igraph_vector_t*)VECTOR(vecs)[i]);
    free(VECTOR(vecs)[i]);
  }
  igraph_vector_ptr_destroy(&vecs);
  igraph_vector_destroy(v);


  return 0;
}
v是一个

指针,看起来VECTOR希望它的参数是一个值。所以把VECTOR(v)改成VECTOR(*v).