I'm trying to understand arrays and have read a lot of the information about them on this forum. I think I understand that they are set-up like Type[], so that int[][] actually means an array of int[].

I create an array as per the following:
    auto arr = new int[3][2][1];
which produces:
    [[0, 0, 0], [0, 0, 0]]
(for each of the following assignments, assume that the array is set back to zeros)

and I can change the 2nd element of the 1st array using:
    arr[0][1] = 4;
which produces:
    [[0, 4, 0], [0, 0, 0]]

and I can change the entire 1st array using:
    arr[0][0 .. 3] = 5;
which produces:
    [[5, 5, 5], [0, 0, 0,]]

however when I try and change elements across arrays rather than within arrays my understanding breaks down.. when I try arr[0 .. 2][0] = 3; // which I think is equivalent to arr[0][0] and arr[1][0]
I'm expecting:
    [[3, 0, 0], [3, 0, 0]]
but it produces:
    [[3, 3, 3], [0, 0, 0]]
showing that arr[0][0 .. 2] is making the same index as arr[0 .. 3][0] ?

Instead of using [0 .. 2] I can use the actual indices to get the result I desired:
    arr[0][0] = 3;
    arr[1][0] = 3;
which produces:
    [[3, 0, 0], [3, 0, 0]]

Could I just get some help with understanding how the slice [0 .. 2] actually works? Thanks

Reply via email to