6

我想获得一个std::valarray范围,该范围引用另一个valarray对象的一系列值,而不复制这些值。文档说明了与索引[]运算符相关的情况,我需要使用 astd::slice std::gslice或 boolean对象作为参数来实现这一点,在这种情况下,std::valarray我将得到 a或作为返回:slice_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_arraygslice_arraymask_arrayindirect_array

那么我应该在哪种情况下使用哪个?我理解这一点,mask_array并且indirect_array似乎更倾向于从一个范围内专门挑选值,但是slice_array/gslice_array呢?

就我而言,我正在考虑继续,slice_array因为这听起来很像我正在做的事情(我正在切片,对吧?)。但我更喜欢更具体的东西!

4

0 回答 0