Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Cython中的向量赋值_Python_Pointers_Vector_Cython - Fatal编程技术网

Python Cython中的向量赋值

Python Cython中的向量赋值,python,pointers,vector,cython,Python,Pointers,Vector,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 Cython编译结果: Error compiling Cython file: ----

这是我的赛昂节目

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
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
但是我可以使用
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
使用此
setup.py
文件:

from distutils.core import setup
from Cython.Build import cythonize

setup(ext_modules=cythonize("test_vector.pyx"))

“编译器崩溃”是指一个bug。向cython用户ML或他们的GitHub提交错误报告。写入narray[i]=NULL或重新解释\u cast(0)是否有区别?(尽管同意larsmans将此报告为bug,因为它是以编译器崩溃的形式出现的),但他们没有在Github上启用问题跟踪器。