python - Cython 获取 C++ 对象列表的 len
问题描述
我有一个 Cythonfoo.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()
.
推荐阅读
- c++ - 大数据 - 如何跨多方扩展大型 TCP 传输
- python - pycharm不使用virtualenv python
- sql-server - PowerShell:使用 Get-Credential 调用 sqlcmd 不起作用
- android - 在模拟器中运行的 React Native 导致捆绑失败:权限被拒绝错误
- c++ - 转换运算符不会在 Visual Studio 2013 中编译,但使用 gcc 编译成功
- azure - 我们可以在不同的 Azure 区域使用相同的订阅吗
- mamp - MAMP 从版本 5 降级回 4 并在启动时出错
- python - 在数据框的列中应用函数 [Python]
- xml - 为什么 simplexml_load_string 无法获取 XML 值?
- scala - 如何使用 Shapeless 中的通用表示来修改任意案例类(例如,替换第一个字段)?