pybind11 :: array_t是否有一个(深层)副本构造函数?

时间:2019-06-13 07:22:32

标签: python c++ pybind11

我有一个现有的pybind11::array_t,并且需要进行复制构造。 pybind11中是否有一个函数可以让我对array_t进行深层复制?

我知道我可以创建一个新的array_t,对其进行适当的大小调整,然后将原始数据复制到其中,但是我想知道是否已有一种方法可以隐藏这些段落。

1 个答案:

答案 0 :(得分:0)

默认副本构造函数执行深层复制people are actually trying to avoid this:)

要使用复制构造函数,可以通过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