うーん、これがやりたいんですが、
"... vt は Stl_To_Igraph_vector_ptr_t 内のスタックに割り当てられたベクトルであるため (つまり、ローカル変数として宣言しただけで、malloc を使用して割り当てていません)、関数が戻るとすぐに存在しなくなります。ポインタを保存します。 igraph_vector_ptr_t で vt に変換しますが、関数を終了するとそのポインターが無効になるため、後でエラーが発生します.vt を igraph_vector_ptr_t にし、malloc を使用して割り当てる必要があります。 ." Tamas によって、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;
}