- •51. Организация файловой системы fat
- •52. Организация файловой системы ext2
- •53. Язык регулярных выражений и его применение, шаблоны имен файлов
- •2)Символы – квантификаторы(повторители):
- •54. Пользовательский интерфейс ос
- •55. Язык сценариев ос
- •56. Процессы и механизмы многозадачности
- •57. Переменные величины в яп, их атрибуты, время жизни, область видимости
- •58. Типы данных в яп
- •59. Алгоритмы обработки массивов
- •60. Выражения и операции. Перегрузка операций.
- •61. Операторный базис языков программирования.
- •62. Функция как средство структурирования программы.
- •69. Механизмы создания и уничтожения объектов
- •70. Наследование в яп
- •Виртуальные функции
- •Синтаксис шаблона функции
- •Примеры определений шаблонов функций
- •Прототип шаблона функции
- •Использование шаблона функции
- •Специализация шаблонов функции
- •Шаблоны классов
- •Синтаксис шаблона класса
- •Пример определения шаблона класса
- •Использование шаблона класса
- •Векторы
- •Уравнение прямой
- •Общее уравнение прямой
- •Расстояние от точки до прямой
- •Углы между двумя прямыми, между прямой и плоскостью.
- •Общее уравнение плоскости
- •Уравнение плоскости
- •Уравнение поверхности:
- •35. Устойчивость решений дифференциальных уравнений
- •Простейшие типы точек покоя. Автономные динамические системы двух уравнений первого порядка. Типы особых точек на фазовой плоскости
- •39. Алгебра логики.
- •3. Основные законы логики.
- •5. Нормальные формы. Совершенные нормальные формы.
- •6. Арифметические операции в алгебре логики. Полином Жегалкина.
- •7. Полнота и замкнутость (примеры полных систем). Теорема Поста.
- •Вопрос 40 Графы и их свойства
- •41. Маршруты в графах и деревья.
- •42. Сети и алгоритмы на сетях.
- •43. Вероятность случайного события. Основные свойства вероятности.
- •44. Случайные величины и законы их распределения.
- •45. Числовые характеристики случайных величин.
- •46. Методы проверки статических гипотез.
- •47. Математические модели операций.
- •48. Матричные игры.
- •49.Линейное программирование. Симплекс-метод.
- •50. Выпуклое программирование.
- •2) Различные формы условий оптимальности.
- •74. Проектирование структуры реляционной базы данных. Метод er-диаграмм (сущность-связь).
- •75. Языки описания запросов. Язык sql.
- •Select [all | distinct] –команда выборки данных
Синтаксис шаблона функции
template <<список аргументов шаблона>>
<тип возврата> <имя функции> (<список аргументов>)
<тело функции>
Например, описание шаблона функции, которая возвращает минимальное значение своих аргументов, может выглядеть так:
template <class Type>
Type min(Type a, Type b)
{
if (a < b) return a; else return b;
}
Теперь такая функция может использоваться для нахождения минимального из двух значений любого типа.
За ключевым словом template следуют один или несколько аргументов, заключенных в угловые скобки и отделенных друг от друга запятыми. Эти аргументы называются формальными аргументами шаблона (или формальными параметрами шаблона). Формальный параметр шаблона часто также называют формальным параметром типа (или формальным аргументом типа). Каждый аргумент состоит из ключевого слова class и идентификатора, обозначающего тип. Список аргументов шаблона не может быть пустым. За списком формальных параметров шаблона следует определение функции. Оно похоже на обычное определение функции, за исключением того, что один или несколько параметров используют типы, специфицированные в списке аргументов шаблона.
Имя формального параметра в списке параметров шаблона должно быть уникальным. Имя формального параметра шаблона можно повторно использовать при определении другого шаблона функции:
template <class Type>
Type max(Type a, Type b)
. . .
template <class Type>
Type min(Type a, Type b)
. . .
Каждому формальному параметру типа должно предшествовать служебное слово class. После своего описания формальный параметр типа становится спецификацией типа для всего тела шаблона. Он используется точно так же, как встроенные или определенные пользователем спецификации типа, например, для объявления переменной или операции приведения типа. Единственным ограничением на использование формальных параметров шаблона является необходимость появления каждого из них в списке формальных параметров функции хотя бы один раз. Естественно, нет ограничений ни на количество вхождений каждого параметра типа, ни на использование непараметризованных типов параметров функции.
Примеры определений шаблонов функций
Пример 1.
Функция принимает массив произвольного типа и возвращает значение его максимального элемента:
#define Tsize unsigned
template <class Type>
Type max(const Type* array, Tsize size)
{
Type max_val = array[0];
for(int i = 1; i < size; i++)
if (array[i] > max_val)
max_val = array[i];
return max_val;
}
В этом примере спецификация типа Type используется: для задания типа возвращаемого значения функции max(); для задания типа ее первого формального параметра array; для задания типа локальной переменной max_val. В ходе трансляции Type будет заменяться различными встроенными или определенными пользователем типами, конкретное значение которых получится при вызове функции max().
Внимание! Для нахождения максимального значения элементов массива определенного пользователем типа должна быть перегружена операция >.