Программирование. Принципы и практика использования C++ Исправленное издание, стр. 338
// по умолчаниюИнициализация объекта
clear_rownone==0Matrix<Piece> start_row = {rook,knight,bishop,queen,king,bishop,knight,rook};Однако он не работает (по крайней мере, пока не появится новая версия языка C++ (C++0x)), поэтому пока приходится прибегать к трюкам с инициализацией массива (в данном случае
init_posMatrixstart_rowclear_rowboard[white_start_row] = start_row; // расставить белые фигурыfor (int i = 1; i<7; ++i) board[i] = clear_row; // очистить середину // доскиboard[black_start_row] = start_row; // расставить черные фигурыОбратите внимание на то, что когда мы извлекли строку, используя выражение
[i]lvalueboard[i]24.5.4. Ввод-вывод объектов класса Matrix
Библиотека
MatrixMatrixMatrix<double> a(4);cin >> a;cout << a;Этот фрагмент кода прочитает четыре разделенные пробелами числа типа
double{ 1.2 3.4 5.6 7.8 }Вывод очень прост, поэтому мы просто можем увидеть то, что ввели. Механизм ввода-вывода двумерных объектов класса
MatrixMatrixMatrix<int,2> m(2,2);cin >> m;cout << m;Он прочитает запись
{ { 1 2 } { 3 4 }}Вывод очень похож.
Операторы
<< >>Matrix<<>>MatrixMatrixIO.hMatrix.hMatrixIO.h24.5.5. Трехмерный объект класса Matrix
По существу, трехмерные объекты класса
MatrixMatrix<int,3> a(10,20,30);a.size(); // количество элементовa.dim1(); // количество элементов в размерности 1a.dim2(); // количество элементов в размерности 2a.dim3(); // количество элементов в размерности 3int* p = a.data(); // извлекает данные по указателю (в стиле языка С)a(i,j,k); // (i,j,k)-й элемент (в стиле языка Fortran) // с проверкой диапазонаa[i]; // i-я строка (в стиле языка C) // с проверкой диапазонаa[i][j][k]; // (i,j,k)-й элемент (в стиле языка С)a.slice(i); // строки от i-й до последнейa.slice(i,j); // строки от i-й до j-йMatrix<int,3> a2 = a; // копирующая инициализацияa = a2; // копирующее присваиваниеa *= 7; // пересчет (и +=, –=, /= и т.д.)a.apply(f); // a(i,j,k)=f(a(i,j,k)) для каждого элемента a(i,j,k)a.apply(f,7); // a(i,j,k)=f(a(i,j,k),7) для каждого элемента a(i,j,k)b=apply(f,a); // создает новую матрицу с условием b(i,j,k)==f(a(i,j,k))b=apply(f,a,7); // создает новую матрицу с условием b(i,j,k)==f(a(i,j,k),7)a.swap_rows(7,9); // переставляет строки a[7] <–> a[9]Если вы умеете работать с двумерными объектами класса
Matrixaa[i]ia[i][j]ja[i][j][k]intk