Еще один метод, которым я задавал этот вопрос для предварительного объявления размера динамического массива, заключается в следующем:
auto matrix = new double[][](3, 2); // elements can be appended/removed
Хотя существует множество различных способовсделайте это в зависимости от того, насколько произвольно вы хотите добавить элементы.Вы, конечно, захотите выбрать тот стиль, который лучше всего подходит для вашей программы, но вот некоторые возможности:
double[][] matrix = [[1.1, 1.2], [2.3, 2.4], [3.5, 3.6]];
или
double[][] matrix;
matrix ~= [1.1, 1.2];
matrix ~= [2.3, 2.4];
matrix ~= [3.5];
matrix[2] ~= 3.6;
или
double[][] matrix = new double[][](1,0);
matrix[0].length = 2;
matrix[0][0] = 1.1;
matrix[0][1] = 1.2;
++matrix.length;
matrix[1] ~= 2.3;
matrix[1] ~= 2.4;
matrix ~= new double[](0);
matrix[$-1] ~= [3.5, 3.6];
и наконец, если вы знаете, что размер вашего массива во время компиляции и он никогда не изменится, вы можете вместо этого создать статический массив:
double[2][3] staticMatrix; // size cannot be changed
Хотя все они используют естественный встроенный механизм массивов.Есть ли конкретная причина, по которой вам нужно использовать класс-контейнер Array?