2012-04-24 63 views
-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; 
} 

回答

0

v是一個指針,它看起來像VECTOR預計它的參數是一個值。因此請將VECTOR(v)更改爲VECTOR(*v)

+0

好吧,它的作品!你可以請幫助我http://stackoverflow.com/questions/10250438/using-stdvector-with-igraph#comment13187786_10250438? – user1310873 2012-04-24 10:55:25

相關問題