Как объявить вектор указателей в Cython? - PullRequest
5 голосов
/ 22 марта 2011

Я хочу объявить что-то подобное:

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

Но Cython выдает мне эту ошибку:

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

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

Ответы [ 2 ]

6 голосов
/ 23 марта 2011

Вам не нужно, чтобы * - vector[Node] генерировал код для вектора указателей Node. Использование 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

Создает код C ++:

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);
2 голосов
/ 15 сентября 2015

Принимая ответ от этого SO ответа , вы должны

ctypedef Node* Node_ptr

, а затем используйте Node_ptr в вашей программе.

...