Cython正在获取C++对象列表的长度

Cython getting len of C++ object list

本文关键字:列表 对象 C++ 获取 Cython      更新时间:2023-10-16

我有一个Cythonfoo.pyx文件和一个相应的c++foo.h文件。在foo.h中,我有一个名为FoosFoo对象列表,定义如下:

std::list<Foo> Foos;

在我的foo.pyxCython文件中,我有一个迭代器,它对列表进行迭代,如下所示:

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

我面临的问题是,我想事先知道Foos有多大。在常规python中,我只会调用len(foos),但在这里尝试len(engine.Foos)len(it)只会导致Cython抛出无法转换为python对象的错误。

在对c++对象列表进行迭代之前,有没有任何方法可以获得它的长度(注意;我不需要在while循环中计算迭代次数的解决方案(。

您可以简单地使用engine.Foos.size()

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