データを格納するために 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 はスマート ポインターまたは参照カウントを使用して追跡するので問題ありませんか?