2011-11-28 3 views
6

remove 함수를 <algorithm>에서 어떻게 사용할 수 있습니까? (또는 다른 어떤 작업이라도 이것을 벡터와 함께 사용하고 싶습니다. 선언하기 위해 을 시도했지만 아직 템플릿 함수가 없습니다.)Cython 벡터 작업

답변

6

Cython은 다음 외부 라이브러리의 컴파일 된 코드와 합리적으로 링크 할 수 있습니다 C 호출 규칙. 템플릿 함수를 사용하려면 특정 구체화 알고리즘을 사용하는 extern "C" 래퍼 함수를 ​​작성해야합니다 (예 : 템플릿 매개 변수를 수정해야 함).

+0

감사합니다. 그게 좋은 방법입니다. 하지만이 경우에는 cython cdef 클래스를 템플릿으로 사용할 수 없습니다 (예 : cdef 벡터 [MyCdefClass] vec). 맞습니까? 어쩌면 * PyObject가 있지만 이런 식으로 성능이 저하 될 수 있습니다. (파이썬 테이블 조회 사용) – Patric

+0

@ 패트릭 : 알고있는 한, 사용하기 위해'std :: vector '를 래핑하는 쉬운 방법은 없습니다 Cython을 사용하여 파이썬에서. –

+0

우리는 이것을'libcpp.vector cimport vector'에서 가져 왔습니다. 그리고 우리는 다음과 같이 할 수 있습니다 'cdef class Obj : pass; cdef 벡터 [Obj] vec; vec.push_back (Obj());'. – Patric