对std :: valarray切片感到困惑(slice_array,gslice_array,mask_array和indirect_array)

时间:2013-10-22 00:45:43

标签: c++ numeric

我想获得std::valarray范围,该范围引用来自另一个valarray对象的一系列值,而不会复制值。关于索引[]运算符的The documentation状态,我需要使用std::slice std::gslice或布尔std::valarray对象作为参数来实现此目的,在这种情况下我会得到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_arrayindirect_array似乎更倾向于专门从范围中挑选值,但slice_array / gslice_array呢?

在我的情况下,我正在考虑使用slice_array,因为它听起来非常像我正在做的事情(我正在切片,对吧?)。但我更喜欢更具体的东西!

0 个答案:

没有答案