如何访问Vector of Vector中的元素

时间:2015-04-06 08:59:45

标签: multidimensional-array vector reference scheme

(set! max-vector        9)

(set! procedures-vector (vector (vector 0 0 0)
                                (vector 1 1 1)
                                (vector 2 4 2)
                                (vector 3 9 4)
                                (vector 4 16 8)
                                (vector 5 25 12)
                                (vector 6 36 18)
                                (vector 7 49 24)
                                (vector 8 64 32)))

(set! drawables-index 0)
(while (< drawables-index max-vector)       
       (set! vector-element (vector-ref procedures-vector drawables-index))
       (set! element-length (vector-length vector-element))

       (set! vector-element-a (vector-ref vector-element 0))
       (set! vector-element-b (vector-ref vector-element 1))
       (set! vector-element-c (vector-ref vector-element 2))

       (set! drawables-index (+ drawables-index 1)))

问题在于,在每次迭代中,矢量元素a,b和amp; c是 相同 !所以我看到(0 0 0)足够公平和(1 1 1) - 好吧这很酷但是 它继续产生(2 2 2)(3 3 3)。我验证了元素的长度 vector-ref在程序向量上得到结果,它回归3 (正确!3个元素,在矢量列表的每个元素中)。

好的,我很生气。有些明智的灵魂请看这个,看看我 可以帮助。感谢

1 个答案:

答案 0 :(得分:1)

您可以使用嵌套的vector-ref访问向量中的向量:

(vector-ref (vector-ref vector row) column)

您使用嵌套向量vector-set!更改数据:

(vector-set! (vector-ref vector row) column value)

由于你这样做了3次,你可以选择行向量作为临时变量:

(let ((rowv (vector-ref vector row)))
  (let ((a (vector-ref rowv 0)) ...)
    (vector-set! rowv 0 (+ a 1)) ...))

set!改变变量名称所指的位置。它们永远不会改变它指向的实际对象。