如何 cCythonize 接受容器作为返回结果输入的 C++ 函数

How to cCythonize a C++ function that accepts a container as input for returning result

我正在学习 Cython 以将 C++ 类 公开给 Python。我成功地公开了简单的 C++ 类,没有很多问题。但是,我有以下问题:

我有一个具有以下 C++ 签名的函数:

void foo(std::vector<bool>&result, std::vector<int> const& x, std::vector<int> const& y)

请注意,我无法更改函数签名,因为这是第三方库。

如何编写适当的 Cython 代码来导出它?问题是 'result' 容器传递给 foo() 到 return 结果。任何有关如何执行此操作的(小)示例将不胜感激。谢谢

已更新:

按照 Czarek 的解决方案,我让它以这种方式工作:

from libcpp.vector cimport vector
from libcpp cimport bool as cpp_bool

cdef extern from "Rectangle.h" namespace "shapes":  
    cdef cppclass Rectangle:
        ....
        void foo(vector[cpp_bool]& result, vector[int] x, vector[int] y)

cdef class PyRectangle:
    def foo(self, x, y):
        cdef vector[cpp_bool] tmp_result
        self.thisptr.foo(tmp_result, x, y)


        result = []
        for i in tmp_result:
          result.append(i)
        return result

如果有更好的方法将向量转换为 python 列表(对象),请告诉我。谢谢!

试试这个:

from libcpp.vector cimport vector
from libcpp cimport bool as cpp_bool

cdef extern from ...:
    cdef void foo(vector[cpp_bool]& result, ...)