Cython 获取 C++ 对象列表的长度
Posted
技术标签:
【中文标题】Cython 获取 C++ 对象列表的长度【英文标题】:Cython getting len of C++ object list 【发布时间】: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() 【参考方案1】:您可以简单地使用engine.Foos.size()
。
https://en.cppreference.com/w/cpp/container/list/size
【讨论】:
以上是关于Cython 获取 C++ 对象列表的长度的主要内容,如果未能解决你的问题,请参考以下文章