首先,我使用 LispWorks。我有一个可调整的数组,我想在位置 i < 填充指针中插入一个元素,所以我需要将所有元素从 i 移动到它的位置 + 1。我的问题是我不知道该怎么做结果是一个可调整的数组,但没有将所有元素复制到另一个数组。性能真的很重要。使用这个数组 #(0 1 2 3 4 6 7) 我在位置 i=5 中插入数字 5 的方式:
(let ((arr (make-array 7 :initial-contents (list 0 1 2 3 4 6 7)
:adjustable T :fill-pointer 7))
(i 5))
(concatenate 'vector (subseq arr 0 i)
(make-array 1 :initial-contents '(5))
(subseq arr i (fill-pointer arr))))
我不知道 LispWorks 是否在内部将所有元素复制到结果数组,但给了我所需的数组,尽管它不可调整且没有填充指针。有什么想法?