我想获得一个std::valarray范围,该范围引用另一个valarray对象的值范围,而不制作值的副本。文档有关的指标规定[]操作,我需要使用std::slice std::gslice或布尔std::valarray对象作为参数来实现这一点,在这种情况下,我会得到一个slice_array,gslice_array或mask_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);
Run Code Online (Sandbox Code Playgroud)
当我查看这些返回类型的描述时,它们都是一样的!查看以下描述:slice_array,gslice_array,mask_array,indirect_array。
那么我应该在哪种情况下使用呢?我理解这一点,mask_array并且indirect_array似乎更倾向于专门从某个范围中选择值,但是slice_array/ gslice_array呢?
就我而言,我正在考虑使用slice_array它,因为这听起来很像我在做什么(我正在切片,对吧?)。但我更喜欢一些具体的东西!