How to declare a vector of pointers in Cython?
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.
精彩评论