Cython получает список объектов C ++ - PullRequest
2 голосов
/ 02 ноября 2019

У меня есть файл Cython foo.pyx и соответствующий файл c ++ foo.h. Внутри foo.h у меня есть список Foo объектов с именем Foos, определенный следующим образом:

std::list<Foo> Foos;

Внутри моего foo.pyx файла Cython у меня есть итератор, который выполняет итерацию по списку, например:

it = engine.Foos.begin()
while it != engine.Foos.end():
    # Do stuff

Проблема, с которой я сталкиваюсь, заключается в том, что я хочу заранее узнать , насколько велика Foos. В обычном Python я бы просто назвал len(foos), однако попытка len(engine.Foos) или len(it) здесь просто приводит к тому, что Cython выдает ошибку о невозможности преобразования в объект Python.

Есть ли способ получитьдлина списка объектов c ++ до итерации (примечание; мне НЕ нужно решение, в котором я определяю количество итераций внутри цикла while).

1 Ответ

1 голос
/ 02 ноября 2019

Вы можете просто использовать engine.Foos.size().

https://en.cppreference.com/w/cpp/container/list/size

...