値のコピーを作成せずに、別のオブジェクトstd::valarrayから値の範囲を参照する範囲を取得したいと考えています。ドキュメントには、インデックス演算子に関連して、これを実現するにはまたはブールオブジェクトをパラメーターとして使用する必要があると記載されています。valarray[]std::slice std::gslicestd::valarrayslice_arraygslice_arraymask_array
slice_array<T> operator[] (slice slc);
gslice_array<T> operator[] (const gslice& gslc);
mask_array<T> operator[] (const valarray<bool>& msk);
indirect_array<T> operator[] (const valarray<size_t>& ind);
これらの戻り値の型の説明を見ると、それらはすべて同じです! 次の説明を確認してください: slice_array、gslice_array、mask_array、indirect_array。
では、どの状況でどちらを使用すればよいのでしょうか? 私はそれを理解してmask_arrayおり、indirect_array特定の範囲から値を選択することに重点を置いているように見えますが、slice_array/はgslice_arrayどうですか?
私の場合は、slice_array私がやっていることとほとんど同じように聞こえるので、一緒に行くことを考えています (私はスライスしていますよね?)。しかし、私はもっと具体的なものが好きです!