- •Определение класса
- •Пример (точка)
- •Оператор вывода (пример)
- •Параметр шаблона по умолчанию (пример)
- •Где перехватывать исключения?
- •Гарантии безопасности исключений
- •Базовые операции
- •Виртуальная функция
- •Использование virtual
- •Массив, как диапазон
- •Контейнер
- •Свойства элемента контейнера
- •Заголовочные файлы
- •Доступ к элементам list
- •Размеры list
- •Доступ к элементам map
- •Очередь с приоритетом
- •Дэк (двусвязная очередь)
- •Матрица (в математике)
- •Атд “матрица”
- •Дерево (доп. Определения)
- •Узел дерева (доп. Определения)
- •“Родственные отношения”
- •“Родственные отношения” (иллюстрация)
- •Баланс в дереве (иллюстрация)
- •Std::less (пример функтора)
- •Std::find_if (пример алгоритма)
- •Функциональные адаптеры
- •Производящая функция
- •Производящие функции для функциональных адаптеров
Очередь с приоритетом
<ключ, данные>
порядок извлечения элементов определяется ключом, а не порядком добавления элементов в очередь
21.04.2012
cppNewb.ru 38
Дэк (двусвязная очередь)
добавление и извлечение элементов возможна с обоих концов
push_back pop_back push_front pop_front
Матрица (в математике)
(0,0)
(1,0)
(1,1)
(2,0)
Атд “матрица”
создание
уничтожение
получение доступа к элементу по индексу (i, j)
|
размера по измерению |
|
21.04.2012 |
размера по измерению
cppNewb.ru |
41 |
Матрица (интерфейс класса)
Matrix(const int nRow, const int nCol); Matrix(const Matrix& matr);
~Matrix();
Matrix& operator=(const Matrix& rhs); int nRow() const;
int nCol() const;
T& at(const int iRow, const int iCol);
const T& at(const int iRow, const int iCol) const;
ostream& writeAsTxt(ostream& ostr) const;
21.04.2012
cppNewb.ru 42
Алгебраические операции
умножение на число
сложение двух матриц
умножение двух матриц
21.04.2012
cppNewb.ru 43
Дополнительные операции
транспонирование (для квадратной)
вставка/удаление столбца/строки
перестановка двух строк/столбцов
умножение на число строки/столбца
21.04.2012
cppNewb.ru 44
Способ представления
приведенный индекс
размеры
массив элементов
или
массив строк/столбцов
21.04.2012
cppNewb.ru 45
АТД “полином”
F(x)=a0·x0 + a1·x1 +…+ aN·xN
ai – коэффициент
i – показатель степени
(неотрицательное целое)
x – переменная
степень многочлена – максимальный показатель степени (для 0 не определен)
21.04.2012
cppNewb.ru 46
Операции с полиномом
создание (одночлен)
уничтожение
сложение полиномов
умножение полиномов
(в т.ч. умножение на число)
вычисление значения
21.04.2012
cppNewb.ru 47
Дополнительные операции
получение коэффициента при заданном показателе степени
21.04.2012
cppNewb.ru 48
Представление полинома
массив an, n=0,N
массив пар {n,an}
список пар {n,an}
21.04.2012
cppNewb.ru 49
Оптимизация
выбор способа хранения в зависимости от разреженности и размерности
для разреженных – хранение в упорядоченном виде (поддержание упорядоченности при вставке членов)
21.04.2012
cppNewb.ru 50
Дерево
(иллюстрация)
a
<
b
a
<
e
a
<
f
b
<
c
b
<
d
c d e f
b
a корень
〈a, 〈b, 〈c〉, 〈d〉〉, 〈e〉, 〈f〉〉
21.04.2012
cppNewb.ru 51