Thread overview | |||||
---|---|---|---|---|---|
|
September 08, 2003 Multidimensional Assiciative Array | ||||
---|---|---|---|---|
| ||||
Apologies if this has been answered, but I couldn't find a reference. I am trying to define an associative array, keyed on int[], of int[]. I have tried: int[int[]][] x; which compiles OK. Attempting to use x causes errors. int[4] y; if(!y in x) { x[y].length = 0; // initialise x[y] } What are your thoughts? Darcy Currey |
September 08, 2003 Re: Multidimensional Assiciative Array | ||||
---|---|---|---|---|
| ||||
Posted in reply to Darcy Currey | Darcy Currey wrote: > Apologies if this has been answered, but I couldn't find a reference. > > I am trying to define an associative array, keyed on int[], of int[]. > I have tried: > int[int[]][] x; x is an array of (assoc array which maps int[] to int) this is not what you wanted. D arrays declare are reversed so that typedef foo[B] elem; elem[A] x; is the same as foo[B][A] x unlike C where is would be elem x[A] => foo x[A][B] > > which compiles OK. > > Attempting to use x causes errors. > int[4] y; > if(!y in x) { > x[y].length = 0; // initialise x[y] > } > > What are your thoughts? try `int[][int[]] x;` x is assoc array mapping int[] to int[] > > Darcy Currey |
September 09, 2003 Re: Multidimensional Assiciative Array | ||||
---|---|---|---|---|
| ||||
Posted in reply to Darcy Currey | Darcy Currey wrote: > > Apologies if this has been answered, but I couldn't find a reference. > > I am trying to define an associative array, keyed on int[], of int[]. > I have tried: > int[int[]][] x; > > which compiles OK. > > Attempting to use x causes errors. > int[4] y; > if(!y in x) { > x[y].length = 0; // initialise x[y] > } > > What are your thoughts? > > Darcy Currey Perhaps this way: ======================== int [][int[]] x; int [4] y= [1,11,21,31]; int [4] z= [21,20,19,18]; int main() { x[y]=z; x[z]=y; int [][] keys=x.keys; int [] key; int [] val; for(int i=0; i<keys.length; i++) { key=keys[i]; val=x[key]; printf("%d: key: ",i); for(int j=0; j<key.length; j++) printf("%d ",key[j]); printf("val: "); for(int j=0; j<val.length; j++) printf("%d ",val[j]); printf("\n",i); } return 0; } ========================= Output: 0: key: 1 11 21 31 val: 21 20 19 18 1: key: 21 20 19 18 val: 1 11 21 31 -- Helmut Leitner leitner@hls.via.at Graz, Austria www.hls-software.com |
Copyright © 1999-2021 by the D Language Foundation