【问题标题】:Cython getting len of C++ object listCython 获取 C++ 对象列表的长度
【发布时间】:2019-11-02 15:23:48
【问题描述】:

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

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()

标签: python c++ cython


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-09-27
    • 2014-04-30
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2015-03-24
    相关资源
    最近更新 更多