Программирование. Принципы и практика использования C++ Исправленное издание, стр. 334
Matrix<double,1> ad1(n1); // элементы типа double; // одна размерность Matrix<int,1> ai1(n1); // элементы типа int; // одна размерность ad1(7) = 0; // индексирование ( ) в стиле языка Fortran ad1[7] = 8; // индексирование [ ] в стиле языка C Matrix<double,2> ad2(n1,n2); // двумерный Matrix<double,3> ad3(n1,n2,n3); // трехмерный ad2(3,4) = 7.5; // истинное многомерное // индексирование ad3(3,4,5) = 9.2;}
MatrixMatrixMatrixMatrixMatrix<double,2>Matrix<double,2>ad2(n1,n2)ad2n1n2n1n2MatrixMatrixКак и во встроенных массивах и объектах класса
vectorMatrixMatrix
MatrixЭто позволяет нам лучше справляться с большим количеством размерностей. Индекс
[x]MatrixaMatrixa[x]Matrix(x,y,z)MatrixПосмотрим, что произойдет, если мы сделаем ошибку.
void f(int n1,int n2,int n3){ Matrix<int,0> ai0; // ошибка: 0-размерных матриц не бывает Matrix<double,1> ad1(5); Matrix<int,1> ai(5); Matrix<double,1> ad11(7); ad1(7) = 0; // исключение Matrix_error // (7 — за пределами диапазона) ad1 = ai; // ошибка: разные типы элементов ad1 = ad11; // исключение Matrix_error // (разные размерности)Matrix<double,2> ad2(n1); // ошибка: пропущена длина 2-й // размерности ad2(3) = 7.5; // ошибка: неправильное количество // индексов ad2(1,2,3) = 7.5; // ошибка: неправильное количество // индексов Matrix<double,3> ad3(n1,n2,n3); Matrix<double,3> ad33(n1,n2,n3); ad3 = ad33; // OK: одинаковые типы элементов, // одинаковые размерности}Несоответствия между объявленным количеством размерностей и их использованием обнаруживается на этапе компиляции. Выход за пределы диапазона перехватывается на этапе выполнения программы; при этом генерируется исключение
Matrix_error

Этот объект класса
MatrixКласс
Matrix