2011-11-28 49 views
6

如何使用<algorithm>remove函数? (或任何其他操作,我想用这个向量,我试图cdef extern宣布它,但没有模板功能,但我认为)Cython矢量运算

回答

6

Cython只能合理地链接到一些外部库中的编译代码C调用约定。要使用模板函数,您必须编写一个使用算法特定版本(即,您必须修复模板参数)的包装函数。

+0

谢谢。这是一个不错的方法。但在这种情况下,我不能使用cython cdef类作为模板(即cdef vector [MyCdefClass] vec),对吧? 也许用* PyObject,但这样会导致性能下降(使用python table lookup) – Patric

+0

@Patric:据我所知,没有真正简单的方法来包装一个'std :: vector'来使用在Python中使用Cython。 –

+0

我们有这样的:'从libcpp.vector cimport vector'。 我们可以做这样的事情 'cdef class Obj:pass; cdef vector [Obj] vec; vec.push_back(Obj());'。 – Patric