Associative array of dynamic array

Philippe Sigaud philippe.sigaud at gmail.com
Sun Sep 9 06:16:01 PDT 2012


On Sun, Sep 9, 2012 at 2:48 PM, Samuele Carcagno <sam.carcagno at gmail.com> wrote:
> thanks a lot! both solutions work, to initialize the arrays of int I'm
> doing:
>
> int[][][string] foo;
> foo["key"] = new int[][](6,6);
> foo["key"][0][0] = 5;
>
> it seems to work.

Great!

Keep in mind all these structures (AA and dynamic arrays) are
reference types. If you copy the associative array, you just copy the
references and any change in one will affect the other. Also,
internally:

alias int[][][string] MyArray;

void main()
{
    MyArray foo;
    foo["abc"] = [[0,1,2], [3,4], []];
    assert(foo["abc"][0][1] == 1);

// internal copy
    foo["def"] = foo["abc"];
    foo["def"][0][1] = 2;
    assert(foo["abc"][0][1] == 2);

// external copy
    auto bar = foo;
    bar["ghi"] = foo["abc"];
    bar["ghi"][0][1] = 3;
    assert(foo["abc"][0][1] == 3 &&  foo["def"][0][1] == 3);

}


More information about the Digitalmars-d-learn mailing list