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