我想获得一个std::valarray
范围,该范围引用另一个valarray
对象的一系列值,而不复制这些值。文档说明了与索引[]
运算符相关的情况,我需要使用 astd::slice
std::gslice
或 boolean对象作为参数来实现这一点,在这种情况下,std::valarray
我将得到 a或作为返回: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
因为这听起来很像我正在做的事情(我正在切片,对吧?)。但我更喜欢更具体的东西!