我有一个Cython foo.pyx文件和一个对应的c++ foo.h文件。
foo.h内部,我有一个称为FooFoos对象的列表,定义如下:

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循环中计算迭代次数的解决方案)。

最佳答案

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

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

关于python - Cython获得C++对象列表的称号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58672459/

10-12 20:48