Dinamyc arrays

user1234 user1234 at 12.de
Sun Sep 17 18:58:41 UTC 2023


On Sunday, 17 September 2023 at 17:15:34 UTC, Timofey wrote:
> I`ve just started learning d and have a question.
> What should I write to set dinamyc rectangular array length in 
> both dimentions?
> For example, I have declareted an array:
>
> ```d
> int[][] matrix;
> ```
>
> and want set it as n*n matrix.
> Thanks

You can flatten the mat and use operator overloads. Here's a some 
basic code to get started:

```d
struct SquaredMat(T)
{
     size_t dim;
     T[] array;

     this(usize dim)
     {
         this.dim = dim;
         array.length = dim * dim;
     }

     auto opIndex(size_t x, size_t y)
     {
         return array[x * dim + y];
     }

     auto opIndexAssign(size_t x, size_t y, T value)
     {
         array[x * dim + y] = value;
         return this;
     }
}
```

Those kind of type should already exist in 3rd part native D 
libraries, e.g "MIR" has something called "NDSlice" IIRC.


More information about the Digitalmars-d-learn mailing list