8435

Параметризовані класи (шаблони)

Лекция

Информатика, кибернетика и программирование

Параметризовані класи (шаблони). Мета работи Ознайомитись з принципами створення шаблонів. Теми для попереднього вивчення Введення у класи Структура класу и функції. Варіанти індивідуальних завдань...

Украинкский

2013-02-11

69.5 KB

5 чел.

Параметризовані класи (шаблони)

1. Мета работи

Ознайомитись з принципами створення шаблонів.

2. Теми для попереднього вивчення

  •  Введення у класи
  •  Структура класу и функції

3. Варіанти індивідуальних завдань

 1      

 2      

 3      

 4      

 5      

 6      

 7      

 8      

 9      

10      

11      

12      

13      

14      

15      

16      

17      

18      

19      

20      

21      

22      

23      

24      

    

4. Завдання до виконання

Згідно з номером варіанта спроектувати шаблон для класу, згідно зі своїм варіантом, та продемонструвати роботу з ними.  

5. Теоретичні відомості

Шаблони. Шаблон (template) — це механізм параметризації визначення класу чи функції довільним типом. Шаблони дозволяють застосовувати простий спосіб введення різного роду загальних концепцій та методів їх спільного використання. Результуючий код за ефективністю не поступається написаному вручну спеціалізованому коду. Клас, що утворюється із шаблону класу у разі конкретного задання значення параметра, є цілком нормальним класом, тому шаблон класу називають генератором типів. Такий процес генерації оголошення класу чи функції за шаблоном та аргументом шаблону називають інстанціюванням. Якщо має місце генерація різних версій шаблону для різних значень параметра, то кожну з цих версій називають спеціалізацією.

Стандартна бібліотека С++ містить класи-контейнери, реалізовані у формі шаблонів. Ось деякі з них:

vector                одновимірний масив елементів

list                     двозв’язний список елементів

deque                  черга елементів з двома кінцями

stack                  стек елементів

map                       асоціативний масив елементів

set                       множина елементів

 

Шаблон може мати кілька параметрів, які можуть бути: класами, стандартними типами, шаблонами; аргумент шаблону може бути константним виразом, адресою об’єкта чи функції; не може бути рядковим літералом. Допускаються значення аргументів шаблонів за замовчуванням, синтаксис та правила використання аналогічні з аргументами функцій за замовчуванням. Одна спеціалізація вважається більш спеціалізованою за іншу, якщо список аргументів першої спеціалізації відповідає другій, а не навпаки. Генеруючи типи, перевагу віддають більш спеціалізованим версіям:

template<class T> class Vector                  // шаблон

{

T* v;

int size;

public:

 Vector();

Vector(int);

//...

};

Наведемо приклад створення об’єкта параметризованого класу:

int main()

{ //...

Vector<int> vi;    //інстанціювання

Vector<char*> vpc;

Vector<double> vd;

//...

}

template<class T T default_value=0> class Vector<T*>

{ /*…*/};

//часткова спеціалізація Vector для значень параметра, поданих у вигляді T*

Vector<int**> vppi; // тут T - int*

template<> class Vector<void*>{/*…*/};

//повна спеціалізація без указання  параметра шаблону

Vector<void*> vpv;

Іноді параметр шаблону функції може бути виведений з типів її аргументів під час виклику, тому його не потрібно вказувати під час інстанціювання:

template<class T> void sort(Vector<T>& v) {/*…*/} //шаблон функції

sort(vi); //vi типу Vector<int>, не потрібно писати sort<int>

Шаблони функцій можна перевантажувати звичайними методами. Розв’язуючи відповідності, перевагу віддають більш спеціалізованим шаблонам:

template<class T> T sqrt(T);

template<class T> complex<T> sqrt(complex<T>);

double sqrt(double);

void f(complex<double> z)

{

 sqrt(2);          //sqrt<int>(int)

 sqrt(2.0);     //sqrt(double)

 sqrt(z);         //sqrt<double>(complex<double>)

}

Шаблони можна ефективно використовувати для успадкування. Методику абстракції за допомогою шаблонів називають параметричним поліморфізмом або поліморфізмом часу компіляції на відміну від поліморфізму часу виконання, що забезпечується віртуальними функціями.

Можна створювати шаблони класів, що походять як від класу, що не є шаблоном, так і від шаблону класу. Класи чи шаблони класів можуть мати члени-шаблони. Члени-шаблони не можуть бути віртуальними.

.

Варіанти індивідуальних завдань

Варіант №1

Динамічний одновимірний масив

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

запис / одержання елемента масиву;

виведення масиву на екран;

пошук елемента масиву;

очищення масиву.

Варіант №2

Динамічний одновимірний масив

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

запис / одержання елемента масиву;

виведення масиву на екран;

інформація про максимальний та поточний розміри масиву;

пошук максимального та мінімального елемента масиву;

Варіант №3

Динамічний двовимірний масив

Конструктори: за замовчуванням, копіювання, з різною кількістю параметрів.

Деструктор.

Функції (дві-три на вибір):

запис / одержання елемента масиву;

виведення масиву на екран;

пошук елемента масиву;

очищення масиву.

Варіант №4

Динамічний двовимірний масив

Конструктори: за замовчуванням, копіювання, з різною кількістю параметрів.

Деструктор.

Функції (дві-три на вибір):

запис / одержання елемента масиву;

виведення масиву на екран;

інформація про максимальний та поточний розміри масиву;

пошук максимального та мінімального елемента масиву;

Варіант №5

Черга елементів

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

виведення всіх елементів на екран;

інформація про максимальну та поточну кількість елементів.

Варіант №6

Динамічний список

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

запис / одержання елемента;

знищення заданої кількості або всіх елементів.

Варіант №7

Динамічний список

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

вставлення елемента з голови (хвоста) у заданому місці;

виведення списку на екран;

пошук елемента списку;

очищення списку;

Варіант №8

Динамічний список

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

видалення елемента з голови (хвоста) із заданого місця;

інформація про кількість елементів списку;

очищення списку;

одержання наступного (попереднього) елемента.

Варіант №9

Динамічний список

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

вставлення елемента з голови (хвоста) у заданому місці;

виведення списку на екран;

пошук елемента списку;

одержання голови (хвоста) списку;

Варіант №10

Множина

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

додавання елемента до множини;

виведення всіх елементів множини на екран;

перевірка входження елемента до множини;

очищення множини;

Вариант №11

Множина

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

додавання елемента до множини;

видалення елемента із множини;

перевірка входження елемента до множини;

очищення множини;

Вариант №12

Множина

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

видалення елемента із множини;

виведення всіх елементів множини на екран;

очищення множини;

перебирання всіх елементів множини.

Вариант №13

Черга елементів

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

виведення всіх елементів на екран;

запис / одержання елемента;

знищення заданої кількості або всіх елементів.

Вариант №14

Стек елементів

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

виведення всіх елементів на екран;

запис / одержання елемента;

Вариант №15

Стек елементів

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

виведення всіх елементів на екран;

інформація про максимальну та поточну кількість елементів.

Вариант №16

Динамічний одновимірний масив

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

запис / одержання елемента масиву;

виведення масиву на екран;

пошук максимального та мінімального елемента масиву;

Вариант №17

Динамічний двовимірний масив

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

запис / одержання елемента масиву;

виведення масиву на екран;

пошук максимального та мінімального елемента масиву;

Вариант №18

Динамічний список

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

запис / одержання елемента;

знищення заданої кількості або всіх елементів.

Вариант №19

Динамічний список

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

вставлення елемента з голови (хвоста) у заданому місці;

виведення списку на екран;

пошук елемента списку;

очищення списку;

Вариант №20

Динамічний двовимірний масив

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

запис / одержання елемента масиву;

виведення масиву на екран;

пошук елемента масиву;

очищення масиву.

Вариант №21

Динамічний одновимірний масив

Конструктори: за замовчуванням, копіювання, з різною кількістю параметрів.

Деструктор.

Функції (дві-три на вибір):

запис / одержання елемента масиву;

виведення масиву на екран;

пошук елемента масиву;

очищення масиву.

Вариант №22

Стек елементів

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

виведення всіх елементів на екран;

запис / одержання елемента;

знищення заданої кількості або всіх елементів.

Вариант №23

Множина

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

видалення елемента із множини;

виведення всіх елементів множини на екран;

очищення множини;

перебирання всіх елементів множини

Вариант №24

Множина

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

додавання елемента до множини;

видалення елемента із множини;

перевірка входження елемента до множини;

очищення множини;


 

А также другие работы, которые могут Вас заинтересовать

29584. Стратегия и тактика планирования рекламной кампании 16.33 KB
  Стратегия и тактика планирования рекламной кампании. Планирование рекламной кампании это процесс в котором принимают участие все структурные подразделения рекламного агентства и маркетинговый отдел рекламодателя. Результат этого процесса составление плана рекламной кампании на определенный период. Главная задача планирования рекламной кампании определить как будет доноситься рекламное послание до потребителя: в какой форме с помощью каких средств массовой информации и в рамках какого бюджета.
29585. Основные понятия в медиапланировании (рейтинг, доля, HUT, PUT, PUR). Их расчет и соотношение в планировании рекламных кампаний 33.55 KB
  Home Using TV одним из базовых показателей в медиапланировании является число людей или домохозяйств в которых смотрят телевизор. Этот показатель описывает количество людей или домохозяйств использующих ТВ на определенный момент времени Иными словами это процент индивидуумов или домохозяйств использующих телевизор в данное время дня. Показатель HUT не включает людей смотрящих телевизор вне дома например в магазинах аэропортах отелях и т. То есть рекламное сообщение смогут увидеть те люди которые по крайней мере в данный момент...
29586. Медиавес рекламной кампании и его измерение (охват, частота, количество предъявлений) 46.5 KB
  Охват — это количество разных индивидуумов, которые были затронуты графиком прохождения рекламной кампании за данный период времени, или, другими словами, увидели нашу рекламную кампанию, наше рекламное объявление хотя бы один раз, обычно представляется в процентном формате.
29587. Принципы отбора медианосителей и оценка их эффективности 13.6 KB
  Рейтинг телевизионного времени доля в тех телезрителей которые смотрели конкретный канал в определенное время от потенциального числа телезрителей. Максимально высокий рейтинг имеет пиковое телевизионное время праймтайм. Сумма всех рейтингов целевой рейтинг показатель чистого полезного охвата умноженный на частоту контакта. Стоимость одного общерейтингового пункта мера определяющая эффективность конкретной программы.
29588. Эффективность рекламных кампаний и лояльность потребителей. Экономические и коммуникативные показатели эффективности 16.05 KB
  Наиболее популярный способ выявления эффективности рекламы методика облегчения вспоминания используемая для того чтобы определить в какой мере человек способен вспомнить ее содержание. Но даже если человек и хорошо запомнил содержание рекламы это вовсе не означает что он готов купить то что рекламируют. Второй способ выявления эффективности рекламы методика узнавания. Людям которые прочитали журнал или видели телевизионную программу предъявляют копии рекламы и задают вопросы о ней.
29589. Новые технологии и виды услуг рекламного рынка 15.87 KB
  Относительно низкая стоимость проекта. Небольшие временные затраты в разработке проекта. Краткосрочность эффекта от реализации проекта Маркетинг слухов Преимущества: 1. Невысокая стоимость в организации проекта.
29590. Соотношение охвата и частоты в медиапланировании. Использование ПО в медиапланировании 20.38 KB
  Соотношение охвата и частоты в медиапланировании. Охват это численность представителей ЦА в рамках компании имевших контакт с рекламой хотя бы 1 раз. При вычислении охвата получатели сообщения учитываются лишь один раз независимо от числа прочитанных ими газет просмотренных или прослушанных телерадиопрограмм. Охват аудитории может быть представлен и как характеристика аудитории которая видела слышала рекламу определенное число раз и как характеристика аудитории которая видела слышала рекламу не менее определенного числа раз.
29591. Рекламные агентства: виды, функции, тенденции развития 12.03 KB
  Агентство также приобретает или привлекает субподрядчиков для покупки рекламного места и времени в различных средствах массовой информации. Фирмы по приобретению рекламного времени. В услуги входит подробный анализ закупаемого времени. После реализации сформированного пакета рекламного времени такая фирма выдает график рекламной трансляции контроль его исполнения и даже проводит расчеты со СМИ.
29592. Место медиапланирования в структуре маркетинговой стратегии. Бюджет рекламной кампании 28.56 KB
  Медиапланирование: Медиапланирование это выбор оптимальных каналов размещения рекламы рекламных контактов проводимый с целью достижения максимальной эффективности рекламной кампании. Медиапланирование важный маркетинговый инструмент управления эффективностью рекламы. Он анализирует представленный товар или услугу его целевую аудиторию бюджет срок размещения рекламы а также цели которые необходимо достигнуть. Таким образом исходя из информации содержащейся в брифе и будет вестись вся последующая работа выбор рекламоносителей...