我有一个函数接受对valarray的const引用,我希望能够切片数组并将切片传递给另一个需要const slice_array的函数。我知道我可以使用operator []和slice来从原始valarray中获得一个新的复制valarray,但我想避免复制。一切都是常量,所以我觉得应该没问题。但是,仅当valarray的下标运算符的文档应用于非常量valarray时才会返回slice_array对象。这在valarray类中是一种主要的缺陷。我错过了什么吗?如何在不发生副本的情况下得到一个const valarray的片段?我可以从const valarray获得const slice_array吗?
这里是我谈论的例子:
void foo(const valarray<double> &big_stuff)
{
const slice_array<double> small_stuff = big_stuff[slice(start, size, stride)];
bar(small_stuff);
}
谢谢!