我想在cython中啓動一個cpp list
,賦值給它,然後迭代列表以獲取它的值。一個通用的代碼看起來是這樣的:cython - 如何迭代C++列表
from libcpp.list cimport list as cpplist
from cpython cimport array
import array
cdef int[:] c_volumecheck(int n, int comb):
cdef:
array.array match = array.array('i', [0]*(n*comb))
int[:] match_c = match
cpplist[int] arr
asign(match_c, comb, n, arr)
return match_c
cdef void asign(int[:] match, int row, int col, cpplist[int] arr):
cdef int j, i
for j in range(row):
for i in range(col):
arr.push_back(1)
for j in range(row):
for i in range(col):
match[j*col + i] = arr[j*col +i]
然而,當我編譯此我得到的錯誤:
Indexing
list[int]
not supported for index typeint
鑑於他們遍歷CPP載體here的方式,我認爲這將是途徑走。
代碼目前我沒有測試過,所以可能會有小問題。它的要點是正確的! – DavidW