获取 Julia 中分配的视图的视图

Tan*_*anj 6 arrays sub-array julia

我注意到,采用非“快速线性索引”子数组分配的视图,而这在经典向量上是可能的。知道如何让这个分配免费吗?

以下是该行为的说明:

function temp!(lin::Vector{Int}, v::AbstractVector)
  w = view(v, lin)
  return nothing
end

lin = Int[1]; v = [0.0, 0.0, 0.0, 0.0];
temp!(lin, v)
@allocated temp!(lin, v) # allocates 0
vr = view(v, 1:3)
temp!(lin, vr)
@allocated temp!(lin, vr) # allocates 64
Run Code Online (Sandbox Code Playgroud)

Sig*_*ega 2

view(x, v)直接引用vwhenx是向量(不是视图)的内存位置,例如

x=[1,2,3]
v=Int[1]
y=view(x,v)
print(y)
v[1]=2
print(y)
Run Code Online (Sandbox Code Playgroud)

但是 Julia 不能直接使用vwhen xis 视图,因为v必须为 重新索引x,因此 Julia 需要分配vexcept vis a Range,而它不需要任何分配。