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.