是否有 pybind11::array_t 的(深度)复制构造函数

Is there a (deep) copy constructor for pybind11::array_t?

本文关键字:深度 复制 构造函数 pybind11 array 是否      更新时间:2023-10-16

我有一个现有的pybind11::array_t,需要做一个复制构造。pybind11内部是否有一个函数可以让我对array_t进行深度复制?

我知道我可以创建一个新array_t,正确调整大小,然后将原始数据复制到其中,但想知道是否已经存在一种方法可以隐藏这些段落。

默认的复制构造函数执行深度复制,人们实际上试图避免这种:)

若要使用复制构造函数,可以执行以下buffer

using py_arr = pybind11::array_t<double>;
py_arr a;
// do stuff with a, fill it and everything...
auto buffer = a.request(); 
py_arr b = py_arr(buffer);
std::cout << b.data() << " " << a.data() << std::endl; // this won't return the same address twice