【发布时间】:2019-11-02 15:23:48
【问题描述】:
我有一个 Cython foo.pyx 文件和一个相应的 c++ foo.h 文件。
在foo.h 内部,我有一个名为Foos 的Foo 对象列表,其定义如下:
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 循环中计算迭代次数的解决方案)。
【问题讨论】:
-
如果你想知道“Foos 有多大”,那么只需使用 size() 函数:Foos.size()