Ich bin ein Noob mit Cython und C++, so habe ich eine Frage zum Argument übergeben. Ich möchte im folgenden Szenario eine Kopie eines Arguments vermeiden vorbei:Cython & C++: Durch Referenz
# 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) # <-- ??
ich die Methode add_one
möchte nur v
ändern „in-place.“ Ich glaube an C++, Sie können dies erreichen, indem Sie das Argument mit &
voraussetzen, was bedeutet, dass alle Änderungen an dem Zeiger an den Zeiger übergeben werden. Auf diese Weise müssen Sie sich keine Sorgen über einen Zeiger oder das eigentliche Objekt übergeben, dh
add_one(v); # in c++
Kann ich das gleiche tun in Cython, oder muss ich explizit die arg Typ stattdessen auf eine Referenz ändern, zB def add_one(vector[int]* vect)
?
Etwas damit verbundene Frage auf [cython-users] (https://groups.google.com/forum/#!forum/cython-users): [ "Frage zum Pass-by-reference"] (https://groups.google.com/forum/#!topic/cython-users/6c2ixr4xEZA) – iljau