我正在使用 boost::multi_array 来存储一些数据。我使用视图对数据进行所有工作,因为我需要处理不同维度的数据切片。
我的问题是, boost::multi_array 的内存是如何管理的?
特别是,我想使用我的数据切片(视图)的副本。因此我想做这样的事情:
typedef boost::multi_array<double, 2> MyContainer;
typedef MyContainer::array_view<1>::type Slice1D;
Slice1D copy(const Slice1D & slice)
{
MyContainer copyMemory(slice);
Slice1D sliceCopy = copyMemory[boost::indices[0][range()]];
return sliceCopy;
}
void main()
{
...
Slice1D copySlice = copy(mySlice);
}
我想知道这是否是错误的,因为当复制函数返回时,包含副本的 multi_array 超出了范围。或者它可以因为 multi_array 使用智能指针或引用计数来跟踪?