-7
嗯,我想做到这一点,错误:请求成员在“V”“stor_begin”,这是无级式的“igraph_vector_t *”
” ......因为VT是一个矢量分配在Stl_To_Igraph_vector_ptr_t中的堆栈上(即你只是声明它是一个局部变量,并没有使用malloc分配它),只要函数返回,它就会停止存在。你在igraph_vector_ptr_t中存储一个指向vt的指针,但该指针变成退出函数时无效,这就是为什么你稍后得到一个错误。你必须使vt为igraph_vector_ptr_t,并使用malloc来分配它,如果你想它超过转换函数。“通过塔马斯 和它被张贴在Using std::vector with Igraph,我不知道怎么填矢量V连接下一个代码,
#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;
}
好吧,它的作品!你可以请帮助我http://stackoverflow.com/questions/10250438/using-stdvector-with-igraph#comment13187786_10250438? – user1310873 2012-04-24 10:55:25