【发布时间】:2014-03-10 08:50:16
【问题描述】:
我是 Cython 和 C++ 的菜鸟,所以我对参数传递有疑问。我想避免在以下情况下传递参数的副本:
# 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) # <-- ??
我希望方法 add_one 只修改 v “就地”。我相信在 C++ 中,您可以通过在参数前面加上 & 来实现这一点,这意味着对指针的任何更改都会传递给指针。这样,您不必担心传递指针或实际对象,即
add_one(v); # in c++
我可以在 Cython 中做同样的事情吗,还是必须将 arg 类型显式更改为引用,即def add_one(vector[int]* vect)?
【问题讨论】:
标签: python c++ reference pass-by-reference cython