2011-11-28 23 views
6

Come è possibile utilizzare la funzione remove da <algorithm>? (O qualsiasi altra operazione, voglio usare questo con i vettori, ho provato a cdef extern per dichiararlo, ma non c'è ancora una funzione modello, penso)Operazioni vettoriali in Cython

risposta

6

Cython può solo linkare ragionevolmente contro il codice compilato in alcune librerie esterne che seguono le convenzioni di chiamata C. Per utilizzare le funzioni del modello, è necessario scrivere una funzione wrapper extern "C" che utilizza una specifica incarnazione dell'algoritmo (vale a dire che è necessario correggere i parametri del modello).

+0

Grazie. Questo è un bel modo. Ma in questo caso non posso usare le classi cython cdef come template (cioè cdef vector [MyCdefClass] vec), giusto? Forse con * PyObject ma c'è una perdita di prestazioni in questo modo. (Utilizza la ricerca della tabella python) – Patric

+0

@Patric: Per quanto ne so, non esiste un modo veramente semplice per avvolgere un 'std :: vector' da usare in Python usando Cython. –

+0

Abbiamo questo: 'dal vettore cimport di libcpp.vector'. E possiamo fare cose come questa 'classe cdef Obj: pass; vettore cdef [Obj] vec; vec.push_back (Obj()); '. – Patric