I have a perimeter of a shape, given by a `double [][]` . I want
to keep the lengths of various diagonals in another associative
array.
So,
/// define some associative array to keep track of diagonals
here..
auto perimeter = new double[][] (0,0);
/// --- fill up perimeter here ---
for(int i = 0; i < perimeter.length; i++) {
for ( int j = 0; j < perimeter.length; j++) {
//// fill up the associative array here
}
}
So, I would like to do this:
double[ double[][]] diagonalLengths;
auto perimeter = new double[][] (0,0);
/// --- fill up perimeter here ---
for(int i = 0; i < perimeter.length; i++) {
for ( int j = 0; j < perimeter.length; j++) {
auto diag_point_i = perimeter[i];
auto diag_point_j = perimeter[j];
diagonalLengths [ [diag_point_i, diag_point_j]] =
calculate_length (i,j);
}
}
This is necessary, as further processing will change the indices
of the points in the perimeter. I can't therefore use `
diagonalLengths [ [i,j]] = calculate_length (i,j);`
However, trying to do this is resulting to :
`test.d(29): Error: associative arrays can only be assigned
values with immutable keys, not `double[][]`
What are my options now? Do I have to convert the array which i
plan to use as a key to a struct and define opEquals and toHash?
Are there automatic hashing mechanisms for this?
If there are multiple possibilities, what is the fastest in terms
of memory? Thank you.