Я использую следующий код, чтобы попытаться работать с векторами C++:Cython: C++ Используйте вектор в словаре?
from libcpp.vector cimport vector
cdef struct StartEnd:
long start, end
cdef vector[StartEnd] vect
print(type(vect))
cdef int i
cdef StartEnd j
k = {}
k['hi'] = vect
for i in range(10):
j.start = i
j.end = i + 2
k['hi'].push_back(j)
for i in range(10):
print(k['hi'][i])
Точная функциональность здесь не имеет значения, это просто манекен программы. Проблема заключается в том, что при запуске это порождает ошибку: AttributeError: 'list' object has no attribute 'push_back'
Это работает, если нет словаря, но я считаю, что словарь необходим для моего использования. Есть ли способ сделать эту работу?
Я не хочу копировать векторы взад и вперед, поскольку эти векторы получат десятки миллионов записей. Может быть, я могу вместо этого сохранить указатели на вектор?
что вы имеете в виду под "Это работает, если нет словаря? –
@RNar Предположительно, что 'vect.push_back (...)' работает, но 'k ['hi']. Push_back (...)' does not. – user4815162342
Попробуйте использовать 'k ['hi']' для вектора, используя ' (k ['hi']). Push_back (...)', как [описано здесь] (http: // docs.cython.org/src/reference/language_basics.html#type-casting). –
user4815162342