相关疑难解决方法(0)

在 Cython 中包装 std::array 并将其暴露给内存视图

似乎 Cython 的存储库中目前有一个拉取请求来包装 c++,std::array但在那之前,我可以使用一些帮助。我目前正在包装std::array这样的:

cdef extern from "<array>" namespace "std" nogil:
    cdef cppclass array2 "std::array<double, 2>":
        array2() except+
        double& operator[](size_t)
Run Code Online (Sandbox Code Playgroud)

这有效,但我必须循环遍历 cython 内存视图,例如 double arr[:],并逐个复制值。有没有更简单的方法来做到这一点?基本上我想做以下事情:

cdef double arr[2]
arr[0] = 1.0
arr[1] = 2.0
cdef array2 array2_arr = arr
#and the reverse
cdef array2 reverse
reverse[0] = 1.0
reverse[1] = 2.0 
cdef double reverse_arr[2] = reverse
Run Code Online (Sandbox Code Playgroud)

这完全不合理吗?因此,使用std::array它非常乏味,因为我有一个 for 循环来将值从 cython 复制到 c++ 以及从 c++ 复制到 cython。此外,由于 cython 不能让我们拥有非类型模板参数,我必须为std::array代码中的每个变体定义一个包装器。任何关于如何有效工作的建议std::array将不胜感激。

编辑:

我现在可以使用以下命令从内存视图转到 …

c++ python arrays cython c++11

5
推荐指数
1
解决办法
1424
查看次数

标签 统计

arrays ×1

c++ ×1

c++11 ×1

cython ×1

python ×1