我想创建一个整数列表,实现为C ++向量,并将其初始化为空(python)列表。 但是,编译代码
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 :(得分:0)
由于随着时间的推移会有很多观点,所以即使它已经过时了,我们也会回答:
cdef vector[int] s
自动初始化一个空vector[int]
,相当于一个空列表(例如print("empty" if not s else "filled")
将打印“空”)。
但是,由于cdef
,s
是c ++ vector
,无法转换为PyObject
([]
是)。
这就是分配在.pyx 中无效的原因。
c ++向量和python列表之间的无缝转换只发生在python脚本中(即在 .py 内,而不 a .pyx中),您可以在其中导入返回或拥有s
的东西。