如何访问数组中的结构元素

问题描述

我想为huffnode结构创建新节点,

(defstruct huffnode

  item
   left 
   right

) 

(setq huffroot (make-huffnode :item huffnode-item (aref arr3 (- (length arr3) 1))
                :left (aref arr3 (-  (length arr3) 1))
                :right (aref arr3 (-  (length arr3) 1))))

我需要从arr3中获取存储huffnode节点的元素,如何访问它们的数据,并将其复制到huffroot数据中

解决方法

您的问题在语法上很混乱,因此不清楚您要问什么。

您使用aref访问数组的元素,并使用accessors访问结构的插槽(默认情况下)是根据结构名称和插槽名称自动生成的,例如(huffnode-item x)获取(或用作setf集的目标时)存储在x

中的huffnode结构的项目槽的值
; SLIME 2.26
CL-USER> (defstruct huffnode item left right)
HUFFNODE
CL-USER> (defvar *huffroot* (make-huffnode :item "foo" :left nil :right nil))
*HUFFROOT*
CL-USER> (setf (huffnode-item *huffroot*)
           (aref arr3 0)
           (huffnode-left *huffroot*)
           (aref arr3 1)
           (huffnode-right *huffroot*)
           (aref arr3 2)