,你不能那样做。所有标准库容器都是其数据的独特所有者,
std::array
也不例外。实际上,
std::array
array_view
类的建议,它将代表不持有的视图中的一个连续数据块。您可以阅读有关它的信息。我不知道该提案的状态(当前的C ++标准化过程使我感到困惑)。如果您使用valarray而不是数组 http://en.cppreference.com/w/cpp/numeric/valarray/sliceEdit:从C ++ 20,您可以参考具有std::Span的连续子阵列
STD::SPAN提供了对象连续序列的视图。
std::array<int, 5> array1 = {20, 10, 35, 30, 5};
std::span array2(array1.begin(), array1.begin() + 3); // {20, 10, 35}; subview of array1
基础数据未被复制而是引用,因此应注意确保使用跨度时原始数组仍然存在。
std::array<int, 3>& array2 = reinterpret_cast<std::array<int, 3>&>(array1);