2011-11-28 36 views
6

işlevini <algorithm> dan nasıl kullanabilirim? (Ya da başka bir işlem, bunu vektörlerle kullanmak istiyorum, bunu bildirmek için cdef extern'u denedim, ancak şablon işlevi yok, sanırım)Cython vektörel harekat işlemleri

cevap

6

Cython, bazı harici kitaplıklarda derlenmiş kodlara karşı yalnızca makul bir bağlantı kurabilir C çağrı kuralları. Şablon işlevlerini kullanmak için, algoritmanın belirli bir enkarnasyonu kullanan bir extern "C" sarmalayıcı işlevi yazmanız gerekir (yani, şablon parametrelerini düzeltmeniz gerekir).

+0

Teşekkür ederiz. Bu hoş bir yol. Ama bu durumda, ctfhon cdef sınıflarını şablon olarak kullanamıyorum (cdef vektörü [MyCdefClass] vec), değil mi? Belki de PyObject ile ancak bu şekilde bir performans kaybı olur. (Python tablosu araması kullanır) – Patric

+0

@Patric: Bildiğim kadarıyla, bir std :: vektörünü kullanmak için gerçekten kolay bir yol yoktur. Cython kullanarak Python'da. –

+0

Biz buna sahibiz: 'libcpp.vector cimport vektöründen '. Ve böyle şeyler yapabiliriz 'cdef sınıfı Obj: pass; cdef vektörü [Obj] vec; vec.push_back (Obj()); '. – Patric