查看push!的代码!,表示数组已增长到一个元素的大小。阵列是否在逻辑上增加了一个元素的大小,而底层存储只要大于或等于所需的存储元素就保持不变,并且在存储空间已满无法容纳额外元素时,通过创建一个明显更大的存储空间并将整个阵列复制到其中来增加?或者,是否必须在每次推送时重新创建数组!活动
function push!(a::Array{T,1}, item) where T
# convert first so we don't grow the array if the assignment won't work
itemT = convert(T, item)
_growend!(a, 1)
a[end] = itemT
return a
end
Julia数组以摊销成本的方式增长(目前增长因子为2(,请参见例如。https://en.wikipedia.org/wiki/Dynamic_array#Geometric_expansion_and_amortized_cost.