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) # <-- ??
我可以在Cython中执行同样的操作,还是必须将arg类型显式更改为引用,即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
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)