2014-11-22 64 views
1

我想創建一個整數列表,並將其作爲C++向量實現,並將其初始化爲空(python)列表。 然而,編譯代碼Cython - 使用python列表初始化vector [int]

from libcpp.vector cimport vector 

cdef vector[int] s = [] 

導致以下編譯錯誤:prova.pyx:3:21: Cannot coerce list to type 'vector[int]'

而且

from libcpp.vector cimport vector 

cdef vector[int] s 
s = [] 

導致同樣的錯誤。

我該怎麼辦?

回答

0

因爲這讓不少隨時間變化的觀點,讓我們來回答,即使它的老:

cdef vector[int] s 

自動初始化一個空vector[int],這相當於一個空的列表(例如print("empty" if not s else "filled")將打印「空」 )。

然而,由於cdefs是一個C++ vector不能被轉換到/從一個PyObject(其[]是)。 這就是爲什麼賦值不起作用裏面的.pyx

C++矢量和python列表之間的無縫轉換隻發生內部Python腳本(即內側的的.py,和一個.pyx),您會導入的東西返回或擁有s

相關問題