2012-04-24 7 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

関連する問題