use*_*996 6 python pointers vector cython
这是我的cython程序
cdef struct Node:
int v
Node* next
Node* pre
def f(int N):
cdef:
vector[Node*] narray
int i
narray.assign(N, 0)
for i in xrange(N):
narray[i] = 0
Run Code Online (Sandbox Code Playgroud)
Cython编译结果:
Error compiling Cython file:
------------------------------------------------------------
...
cdef:
vector[Node*] narray
int i
narray.assign(N, 0)
for i in xrange(N):
narray[i] = 0
^
------------------------------------------------------------
testLinkList.pyx:107:14: Compiler crash in AnalyseExpressionsTransform
Run Code Online (Sandbox Code Playgroud)
但我可以使用push_back()在向量的末尾追加值或使用int而不是Node*.怎么了?
您使用什么版本的 Cython?版本 0.20.1 适用于我,代码如下:
# distutils: language=c++
from libcpp.vector cimport vector
cdef struct Node:
int v
Node* next
Node* pre
def f(int N):
cdef:
vector[Node*] narray
int i
narray.assign(N, NULL)
for i in range(N):
narray[i] = NULL
Run Code Online (Sandbox Code Playgroud)
并使用这个setup.py文件:
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("test_vector.pyx"))
Run Code Online (Sandbox Code Playgroud)