怎样在一个向量中间插入另一个向量

Julia 中有一个函数insert!,可以在向量的一个位置处插入一个元素. 我的问题是怎么在这个位置插入一个矢量.

例如,

a=[1,2,3]
insert!(a,3,2)

会得到

4-element Vector{Int64}:
 1
 2
 2
 3

我想要这样的效果,

a=[1,2,3]
insert!(a,3,[1,2])

得到

[1,2,1,2,3]

请问应该如何实现呢

Collections and Data Structures · The Julia Language

谢谢。不过我没有在文档中找到相应的函数。

我仿照标准库中的函数insert!的写法,写了一个函数myinsert!来实现这个功能:

function myinsert!(a::Array{T,1}, i::Integer, b::Array{S,1}) where {T, S}
    # Throw convert error before changing the shape of the array
    _b = S == T ? b : convert(Array{T,1}, b)::Array{T,1}
    n = length(b)
    Base._growat!(a, i, n)
    # _growat! already did bound check
    @inbounds for j in 1:n
        a[i+j-1] = _b[j]
    end
    return a
end

现在的话,

aa=[1.,2,3]

myinsert!(aa,3,[1,2])

会得到

5-element Vector{Float64}:
 1.0
 2.0
 1.0
 2.0
 3.0

这个问题本质上是 flatten 的问题。
如果目标是没有副作用的话,vcat 函数可能更适合你的需求。

julia> vcat(a, 3,[1,2])
6-element Vector{Int64}:
1
2
3
3
1
2

谢谢你的建议. 不过我确实需要改变矢量 a. 而且这个vcat函数只能拼接不能插入. a=[1,2,3], 在第三个位置插入矢量[1,2], 我希望得到的是[1,2,1,2,3],而不是[1,2,3,1,2].当然可以写一个函数,先将a拆分再在需要的位置拼接上插入的矢量, 虽然我没有做过测试,但我觉得这个函数的性能不如myinsert!.

display(vcat(a[1:end-1],prepend!([a[end]],[1,2])))