blue_dvd 发表于 2016-7-14 08:31:42

二维数组中制定插入一行,如何操作?【已解决】

本帖最后由 blue_dvd 于 2016-7-14 09:45 编辑

想在给定二维数组中插入一行,比如插入到第2行
#include <Array.au3>

Local $aArray_Base
For $i = 0 To 9
        For $j = 0 To 2
                $aArray_Base[$i][$j] = $i & " - " & $j
        Next
Next
_ArrayDisplay($aArray_Base, "2D - Original")


; Insert 1D array
$aArray = $aArray_Base
Local $aFill_1D= ["Above 2", "2-1", "2-2"]


_ArrayDisplay($aArray, "插入第二行")
发现数组函数中没有这样的函数,可能也不会用,希望高手指点,谢谢!

nmgwddj 发表于 2016-7-14 08:58:35

本帖最后由 nmgwddj 于 2016-7-14 09:00 编辑

我没太研究过 AU3 有没有官方函数或UDF可以实现这个功能。

数组在声明的时候就是定长的,只不过 AU3 包装了一层后让你觉得他是一个动态可以变长度的。实际上动态增长或减少的时候,是重新分配的新的内存来产生一个新的数组(也有可能是原数组一次性申请一个较大空间向里面增加数据,C++ STL 中 vector 就是这样实现的)。

若想在指定位置增加一个元素,你自己实现是需要把数组从指定位置拆开,把拆开后的前一段+新元素+后一段拼接起来产生一个新数组,这样来实现。

blue_dvd 发表于 2016-7-14 09:45:21

自己搞定了,用函数库
_Array2D_Insert($avArray,0, $aUpdate2, Default, 0, 0)
页: [1]
查看完整版本: 二维数组中制定插入一行,如何操作?【已解决】