开发者

How to declare a vector of pointers in Cython?

开发者 https://www.devze.com 2023-02-18 20:44 出处:网络
I want to declare something like that: cdef vector[Node*] list2node(list my_list): But Cyth开发者_如何转开发on gives me this error:

I want to declare something like that:

cdef vector[Node*] list2node(list my_list):

But Cyth开发者_如何转开发on gives me this error:

cdef vector[Node*] list2node(list my_list):
                ^
------------------------------------------------------------

mod.pyx:77:20: Expected an identifier or literal


You shouldn't need the * -- vector[Node] should generate code for a vector of Node pointers. Using Cython 0.14.1:

cdef class Node: 
    pass
cdef vector[Node] list2node():
    pass
cdef vector[int] test_int():
    pass
cdef vector[int*] test_intp(): 
    pass

Generates the C++ code:

static PyTypeObject *__pyx_ptype_3foo_Node = 0;
static std::vector<struct __pyx_obj_3foo_Node *> __pyx_f_3foo_list2node(void);
static std::vector<int> __pyx_f_3foo_test_int(void);
static std::vector<int *> __pyx_f_3foo_test_intp(void);


Taking the answer from this SO answer, what you should do is

ctypedef Node* Node_ptr

and then use Node_ptr across your program.

0

精彩评论

暂无评论...
验证码 换一张
取 消