fix some bug and add cap method to array

This commit is contained in:
2019-04-15 01:42:22 +08:00
parent 703dff0813
commit 293e02149f
4 changed files with 41 additions and 3 deletions

View File

@@ -23,6 +23,8 @@ type ArrayN struct {
dimN int
data *Node // []*Node
cap int
}
func New() *ArrayN {
@@ -40,6 +42,10 @@ func NewWithCap(dims ...int) *ArrayN {
arr.product[i] = pvalue
}
// arr.data = make([]*Node, arr.dims[0], arr.dims[0])
arr.cap = 1
for _, d := range arr.dims {
arr.cap *= d
}
return arr
}
@@ -107,6 +113,10 @@ func (arr *ArrayN) set(curDim int, curidx int, pdata **Node, parent *Node) (*Nod
return arr.set(curDim-1, nidx, &cur.data.([]*Node)[dimindex], cur)
}
func (arr *ArrayN) Cap() int {
return arr.cap
}
func (arr *ArrayN) Grow(size int) {
arr.dims[0] += size
@@ -121,6 +131,11 @@ func (arr *ArrayN) Grow(size int) {
newData := make([]*Node, arr.dims[0], arr.dims[0])
copy(newData, tempdata)
arr.data.data = newData
arr.cap = 1
for _, d := range arr.dims {
arr.cap *= d
}
}
func (arr *ArrayN) Set(idx int, value interface{}) {