6

私が書いたとしましょう

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

したがって、s は 9x9 のビット行列です。

そして、sの1行目を取得したい。どうすればそれを取得できますか?

私は次のことができたでしょう:

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

(svref s 0) で最初の行にアクセスします。
しかし、組み込みの方法があるかどうか知りたいです。
(そして、2次元配列はより少ないバイトを割り当てるようです)。

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 に答える