我想获得std::valarray
范围,该范围引用来自另一个valarray
对象的一系列值,而不会复制值。关于索引[]
运算符的The documentation状态,我需要使用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);
当我看到这些返回类型的描述时,它们都是一样的!请查看以下说明:slice_array,gslice_array,mask_array,indirect_array。
那么我应该在哪种情况下使用?我了解mask_array
和indirect_array
似乎更倾向于专门从范围中挑选值,但slice_array
/ gslice_array
呢?
在我的情况下,我正在考虑使用slice_array
,因为它听起来非常像我正在做的事情(我正在切片,对吧?)。但我更喜欢更具体的东西!