digitalmars.D.learn - Dinamyc arrays
- Timofey (7/7) Sep 17 2023 I`ve just started learning d and have a question.
- Salih Dincer (19/26) Sep 17 2023 There are many ways to do this, but I can quickly show you two:
- user1234 (26/35) Sep 17 2023 You can flatten the mat and use operator overloads. Here's a some
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: ``` int[][] matrix;``` and want set it as n*n matrix. Thanks
Sep 17 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: ``` int[][] matrix;``` and want set it as n*n matrix. ThanksThere are many ways to do this, but I can quickly show you two: ```d import std.stdio; void main() { int[][] matrix; enum n = 6; // method 1: //matrix = new int[][](n, n); /* // method 2: matrix.length = n; foreach(ref e; matrix) e.length = n;//*/ matrix.writeln; } ``` SDB 79
Sep 17 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. ThanksYou 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.
Sep 17 2023