Загальні положення 4 Частина Основи мови С++ 9



Download 1,18 Mb.
bet35/37
Sana05.08.2022
Hajmi1,18 Mb.
#846530
1   ...   29   30   31   32   33   34   35   36   37
Bog'liq
Лабораторні роботи метод вказівки

Приклад рішення задачі
Див. проект «Task17».
Контрольні питання

  1. Що мають на увазі, коли говорять про сортування колекції об’єктів?

  2. Наведіть приклади коли необхідне впорядковування послідовності об’єктів.

  3. Охарактеризуйте різні алгоритми сортування.

  4. Дайте рекомендації щодо прискорення процесу сортування.

  5. Наведіть приклади зручного угрупування послідовності об’єктів.

  6. Дайте рекомендації щодо реалізації універсальних алгоритмів обробки контейнерів.

  7. Що таке компаратор?

  8. Як реалізувати і використовувати компаратор у вигляді зовнішньої функції?

  9. Як реалізувати і використовувати компаратор у вигляді внутрішньої функції?

  10. Як використовують ітератори?



18 Узагальнення – шаблони класів, шаблони функцій. Бібліотека шаблонів


Лабораторна робота №18
Мета: продемонструвати використання в програмах на С++ родових класів і шаблонів сімейства функцій.
Індивідуальні завдання
При розробці проекту використовувати раніше обрану прикладну область та реалізовану функціональність. Створити клас, що забезпечує представлення Об’єкта 5. Створити методи, які забезпечують обробку колекції екземплярів Об’єктів 5. Забезпечити збереження колекції у файлі та відновлення її з файла. Запропонувати варіант реалізації класу-контейнера з використанням шаблонів.
Термінологія
Шаблон (template) – механізм параметризації класу або функції довільним типом. Шаблони дозволяють застосовувати механізм введення загальних концепцій та методів їх спільного використання. Із шаблону класу у разі задавання конкретного значення параметра утворюється звичайний клас, тому шаблон класу називають генератором типів або родовим класом.
Шаблони як засіб мови C++ призначені для кодування узагальнених алгоритмів, без прив’язки до деяких параметрів: типу даних, розміру буфера та стандартного значення. В C++ можливе створення шаблону функції і шаблону класу. Використання шаблонів не скорочує виконаний код, тому що для кожного набору параметрів компілятор створює окремий екземпляр функції або класу.
Процес генерації спеціалізованого класу чи функції за шаблоном та аргументом шаблону називають інстанціюванням.
Коли виконується генерація різних версій шаблону для різних значень параметра, кожну з цих версій називають спеціалізацією.
У заголовку шаблону імена параметрів шаблону повинні бути унікальні. Параметрами шаблонів можуть бути: параметри-типи, параметри звичайних типів, параметри-шаблони. Для параметрів будь-якого типу можна вказувати значення за замовчуванням, синтаксис та правила використання аналогічні з аргументами функцій за замовчуванням. Одна спеціалізація вважається більш спеціалізованою за іншу, якщо список аргументів першої спеціалізації відповідає другій, а не навпаки. В процесі генерації типів перевагу віддають більш спеціалізованим версіям.
Шаблони можна ефективно використовувати для успадкування. Методику абстракції за допомогою шаблонів називають параметричним поліморфізмом або поліморфізмом часу компіляції на відміну від поліморфізму часу виконання, що забезпечується віртуальними функціями.
При створенні функцій іноді виникають ситуації, коли дві функції виконують однакову обробку, але працюють з різними типами даних (наприклад, одна використовує параметри типу int, а інша типу float або double). За допомогою механізму перевантаження функцій можна використовувати одне й те ж ім’я для функцій, що виконують різні дії і мають різні типи параметрів. Однак, якщо функції повертають значення різних типів, слід використовувати для них унікальні імена. Шаблонна функція дає можливість повертати значення різних типів, що значно полегшує роботу і зменшує кількість змінних у коді.
Шаблони розміщують в файлах, що включаються (заголовних).
Стандартна бібліотека шаблонів (Standard Template Library; STL) – бібліотека для C++, що містить набір узагальнених алгоритмів, контейнерів, засобів доступу до їхнього вмісту і різних допоміжних функцій.
У бібліотеці виділяють п’ять основних компонентів:

  • контейнер (container) – зберігання набору об’єктів в пам’яті; розді­ляють на чотири категорії: послідовні, асоціативні, контейнери-адаптери і псевдоконтейнери; використовується семантика передачі об’єктів за значенням;

  • ітератор (iterator) – забезпечення засобів послідовного доступу до вмісту контейнера; кожен контейнер підтримує свій вид ітератора, який є інтелектуальним вказівником, що «знає» як отримати доступ до елементів конкретного контейнера

  • алгоритм (algorithm) – визначення обчислювальної процедури;

  • адаптер (adaptor) – адаптація компонентів для забезпечення різного інтерфейсу;

  • функціональний об’єкт (functor) – заховання функції в об’єкті для використання іншими компонентами.

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

Download 1,18 Mb.

Do'stlaringiz bilan baham:
1   ...   29   30   31   32   33   34   35   36   37




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish