change heap array

This commit is contained in:
2019-04-15 22:57:44 +08:00
parent 293e02149f
commit 42cd6ef9fa
4 changed files with 559 additions and 9 deletions

View File

@@ -96,19 +96,24 @@ func (arr *Array3) Cap() int {
}
func (arr *Array3) Grow(size int) {
arr.zsize += size
temp := make([][][]interface{}, arr.zsize, arr.zsize)
zsize := arr.zsize + size
temp := make([][][]interface{}, zsize, zsize)
copy(temp, arr.data)
arr.data = temp
tempysizes := make([]int, arr.zsize, arr.zsize)
tempysizes := make([]int, zsize, zsize)
copy(tempysizes, arr.ysizes)
arr.ysizes = tempysizes
tempxsizes := make([][]int, arr.ysize, arr.ysize)
tempxsizes := make([][]int, zsize, zsize)
copy(tempxsizes, arr.xsizes)
arr.xsizes = tempxsizes
for i := arr.zsize; i < zsize; i++ {
arr.xsizes[i] = make([]int, arr.ysize, arr.ysize)
}
arr.zsize += size
arr.cap = arr.zsize * arr.xyproduct
}