6

假设我写了

(setf s (make-array (list 9 9) :element-type 'bit))

所以 s 是一个 9x9 的位矩阵。

我想获得第一行的 s。我怎么得到它?

我本可以做到以下几点:

(setf s (make-array 9 
          :element-type 'array 
          :initial-element 
          (make-array 9 :element-type 'bit)))

并通过 (svref s 0) 访问第一行。
但我想知道是否有内置方式。
(并且 2 dim 数组似乎分配了更少的字节)。

4

1 回答 1

5
(defun array-slice (arr row)
    (make-array (array-dimension arr 1) 
      :displaced-to arr 
       :displaced-index-offset (* row (array-dimension arr 1))))

这仅适用于行切片,IIRC 不能复制数组。写入切片将修改原始数组。

于 2012-09-08T02:16:26.043 回答