Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.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&;C++;:参照传递 我是Cython和C++的NoOB,所以我有一个关于参数传递的问题。我希望避免在以下场景中传递参数的副本: # somefile.pyx #distutils: language = c++ from libcpp.vector cimport vector def add_one(vector[int] vect): cdef int i n = vect.size() for i in range(n): vect[i] += 1 cdef vector[int] v for i in range(100000): v.push_back(i) add_one(v) # <-- ??_Python_C++_Reference_Pass By Reference_Cython - Fatal编程技术网

Python Cython&;C++;:参照传递 我是Cython和C++的NoOB,所以我有一个关于参数传递的问题。我希望避免在以下场景中传递参数的副本: # somefile.pyx #distutils: language = c++ from libcpp.vector cimport vector def add_one(vector[int] vect): cdef int i n = vect.size() for i in range(n): vect[i] += 1 cdef vector[int] v for i in range(100000): v.push_back(i) add_one(v) # <-- ??

Python Cython&;C++;:参照传递 我是Cython和C++的NoOB,所以我有一个关于参数传递的问题。我希望避免在以下场景中传递参数的副本: # somefile.pyx #distutils: language = c++ from libcpp.vector cimport vector def add_one(vector[int] vect): cdef int i n = vect.size() for i in range(n): vect[i] += 1 cdef vector[int] v for i in range(100000): v.push_back(i) add_one(v) # <-- ??,python,c++,reference,pass-by-reference,cython,Python,C++,Reference,Pass By Reference,Cython,我可以在Cython中执行同样的操作,还是必须将arg类型显式更改为引用,即def add_one(vector[int]*vect)?找到了我自己问题的答案。显然,您可以通过引用传递,但函数必须是cdef'ed,而不是def'ed # somefile.pyx #distutils: language = c++ from libcpp.vector cimport vector cdef void add_one(vector[int]& vect): cdef int i

我可以在Cython中执行同样的操作,还是必须将arg类型显式更改为引用,即
def add_one(vector[int]*vect)

找到了我自己问题的答案。显然,您可以通过引用传递,但函数必须是
cdef
'ed,而不是
def
'ed

# somefile.pyx
#distutils: language = c++
from libcpp.vector cimport vector

cdef void add_one(vector[int]& vect):
    cdef int i
    n = vect.size()
    for i in range(<int>n):
        vect[i] += 1

cdef vector[int] v
for i in range(100000):
    v.push_back(i)
add_one(v)
#somefile.pyx
第二语言:语言= C++
从libcpp.vector cimport vector
cdef void add_one(向量[int]&vect):
cdef int i
n=向量大小()
对于范围(n)中的i:
向量[i]+=1
cdef向量[int]v
对于范围内的i(100000):
v、 推回(i)
加一(五)
关于以下方面的一些相关问题:
# somefile.pyx
#distutils: language = c++
from libcpp.vector cimport vector

cdef void add_one(vector[int]& vect):
    cdef int i
    n = vect.size()
    for i in range(<int>n):
        vect[i] += 1

cdef vector[int] v
for i in range(100000):
    v.push_back(i)
add_one(v)