我有一个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循环中计算迭代次数的解决方案)。
最佳答案
您可以简单地使用engine.Foos.size()
。
https://en.cppreference.com/w/cpp/container/list/size
关于python - Cython获得C++对象列表的称号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58672459/