#Is there a (N-D) contiguous data structure for non-trivial structs?

1 messages · Page 1 of 1 (latest)

slim stream
#

I need a data strucuture that is a 2-dimensional array of (inline) lists of pairs. That is, if subdata = data[i][j], then subdata is a dynamic data structure that contains tuples of size 2.

My take on solving this was to use a Tensor for the 2-D data structure, an InlinedFixedVector for the flexible part, and a StaticTuple for the pair.

from tensor import Tensor
from collections import InlinedFixedVector
from utils import StaticTuple


struct MyStruct:
    var data: Tensor[InlinedFixedVector[StaticTuple[Float64, 2], 10]]

However, I get the following error:

'Tensor' parameter #0 has 'DType' type, but value has type 'AnyStruct[InlinedFixedVector[StaticTuple[SIMD[float64, 1], 2], 10]]'

I figure that Tensors can only hold trivial data types. If so, is there a good general data structure for multi-dimensional data? I was thinking of putting InlineList into a self-made 2D represntation of List, but InlineList does not implement CollectionElement (as of yet?).

solid haven
slim stream
#

Thanks! Hmm... I do not know the size of the outer array at compile time. Is there an alternative with dynamic memory?

solid haven
#

List will put it all behind one pointer, but you probably want that anyways.

slim stream
#

Yes, I think in principle, List is not too bad for the "outer" array (except that I need to wrap it into a 2D structure around for simple access). I guess this is the easiest approach if no one else has done the work so far...