C++ 我可以从常量数组中获取常量切片数组吗?

C++ 我可以从常量数组中获取常量切片数组吗?,c++,valarray,C++,Valarray,我有一个函数,它接受对valarray的const引用,我希望能够对数组进行切片,并将切片传递给另一个需要const slice_数组的函数。我知道我可以使用操作符[]和一个切片从原始valarray中得到一个新的复制valarray,但我想避免复制。一切都是常量,所以我觉得应该没问题。但是,valarray的下标运算符的文档仅在应用于非常量valarray时返回一个切片数组对象。这感觉是valarray类的一个主要缺陷。我错过什么了吗?如何在不产生副本的情况下获取const valarray的

我有一个函数,它接受对valarray的const引用,我希望能够对数组进行切片,并将切片传递给另一个需要const slice_数组的函数。我知道我可以使用操作符[]和一个切片从原始valarray中得到一个新的复制valarray,但我想避免复制。一切都是常量,所以我觉得应该没问题。但是,valarray的下标运算符的文档仅在应用于非常量valarray时返回一个切片数组对象。这感觉是valarray类的一个主要缺陷。我错过什么了吗?如何在不产生副本的情况下获取const valarray的切片

下面是我所说的一个例子:

void foo( const valarray<double> &big_stuff )
{
    const slice_array<double> small_stuff = big_stuff[slice(start, size, stride)];
    bar( small_stuff );
}
void foo(const valarray和big_stuff)
{
const slice_数组small_stuff=big_stuff[切片(开始、大小、步幅)];
酒吧(小东西);
}
谢谢

如何在不产生副本的情况下获取const valarray的切片

由于
std::valarray
不包含
std::slice\u array
对于任何请求,它都不会只给您请求的
std::slice_array
链接(指针、引用)

但是std::slice_数组只能包含三个机器字, 很难想象,不复制
std::slice_数组
可以优化某些内容的情况。例如,来自gcc/libstdc++(仅数据、函数):

模板
类切片数组{
const size_t_M_sz;
常量大小/步幅;
常量数组(const)M(mu)数组;;
};
其中_数组:

template<typename _Tp>
  struct _Array { _Tp* const __restrict__ _M_data; };
模板
结构数组{u Tp*const\u restrict\u\u M\u data;};
template<typename _Tp>
  struct _Array { _Tp* const __restrict__ _M_data; };