Читаем Программирование. Принципы и практика использования C++ Исправленное издание полностью

Однако он не работает (по крайней мере, пока не появится новая версия языка C++ (C++0x)), поэтому пока приходится прибегать к трюкам с инициализацией массива (в данном случае init_pos) и использовать его для инициализации объектов класса Matrix. Мы можем использовать объекты start_row и clear_row следующим образом:

board[white_start_row] = start_row;             // расставить белые фигуры

for (int i = 1; i<7; ++i) board[i] = clear_row; // очистить середину

                                                // доски

board[black_start_row] = start_row;             // расставить черные фигуры

Обратите внимание на то, что когда мы извлекли строку, используя выражение [i], мы получили значение lvalue (см. раздел 4.3); иначе говоря, мы можем присвоить результат элементу board[i].

<p id="AutBody_Root470"><strong>24.5.4. Ввод-вывод объектов класса Matrix</strong></p>

Библиотека Matrix предоставляет очень простые средства для ввода и вывода одно- и двухмерных объектов класса Matrix:

Matrix a(4);

cin >> a;

cout << a;

Этот фрагмент кода прочитает четыре разделенные пробелами числа типа double, заключенных в фигурные скобки; например:

{ 1.2 3.4 5.6 7.8 }

Вывод очень прост, поэтому мы просто можем увидеть то, что ввели. Механизм ввода-вывода двумерных объектов класса Matrix просто считывает и записывает последовательности одномерных объектов класса Matrix, заключенные в квадратные скобки. Рассмотрим пример.

Matrix m(2,2);

cin >> m;

cout << m;

Он прочитает запись

{

  { 1 2 }

  { 3 4 }

}

Вывод очень похож.

Операторы << и >> из класса Matrix позволяют писать простые программы. В более сложных ситуациях нам потребуется заменить их своими операторами. По этой причине определение операторов << и >> из класса Matrix помещены в заголовок MatrixIO.h (а не Matrix.h), поэтому, для того чтобы использовать матрицы в своей программе, вам не обязательно включать заголовок MatrixIO.h.

<p id="AutBody_Root471"><strong>24.5.5. Трехмерный объект класса Matrix</strong></p>

По существу, трехмерные объекты класса Matrix, как и матрицы более высоких размерностей, похожи на двумерные, за исключением того, что они имеют больше размерностей. Рассмотрим пример.

Matrix a(10,20,30);

a.size;             // количество элементов

a.dim1;             // количество элементов в размерности 1

a.dim2;             // количество элементов в размерности 2

a.dim3;             // количество элементов в размерности 3

int* 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 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]

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT