Function ARRAY-ROW-MAJOR-INDEX

UP


Function ARRAY-ROW-MAJOR-INDEX

Function ARRAY-ROW-MAJOR-INDEX

構文

array-row-major-index array &rest subscripts => index

引数と戻り値

array - 配列
subscripts - arrayの有効な配列のインデックスのリスト
index - arrayの有効な配列のrow-majorインデックス

定義

subscriptsによって指定されたarrayの要素に対して row-majorの順序に従った位置を計算し、 arrayの最初の位置から計算された その要素のオフセットを返却します。

arrayが一次元配列のとき、 array-row-major-indexの返却値ははsubscriptと同じです。

array-row-major-indexはfill-pointerを無視します。

例文

(setq a (make-array '(4 7) :element-type '(unsigned-byte 8)))
(array-row-major-index a 1 2) =>  9
(array-row-major-index 
   (make-array '(2 3 4) 
               :element-type '(unsigned-byte 8)
               :displaced-to a
               :displaced-index-offset 4)
   0 2 1) =>  9

影響

なし。

例外

なし。

参考

なし。

備考

array-row-major-indexの定義は、 エラーチェックをなしにすれば次のように表現することができます

 (defun array-row-major-index (a &rest subscripts)
   (apply #'+ (maplist #'(lambda (x y)
                            (* (car x) (apply #'* (cdr y))))
                       subscripts
                       (array-dimensions a))))

TOP, Github