Предмет:
Тип роботи:
Курсова робота
К-сть сторінок:
35
Мова:
Українська
Вектор.
List Двозв’язний список.
Deque Двостороння черга.
Set Множина.
Multiset Мультмножина.
Map Асоціативний масив, що містить унікальні ключі й значення.
Multimap Асоціативний масив, що допускає дублювання ключів і значень.
Stack Стек.
Queue Черга.
Priority_queue Черга із пріоритетом.
Bitset Бітовий набір.
Послідовні контейнери
Послідовність – це різновид контейнерів, що містять скінчену множину однотипних об’єктів, упорядкованих у лінійному порядку. У бібліотеці STL передбачено три види послідовних контейнерів: вектор (клас vector), список (клас list) і двостороння черга (клас deque). Крім того, вони є базовими класами для створення більше складних контейнерів – стека (клас stack). Черги (клас queue) і черги із пріоритетом (клас priority_queue), Для кожної з послідовностей передбачений свій набір операцій, але існують операції, загальні для всіх послідовностей.
Асоціативні контейнери
Асоціативні контейнери – це структури даних, що забезпечують швидкий пошук даних по ключі. У стандартній бібліотеці шаблонів передбачено чотири різновиди асоціативних контейнерів: set (множина), multiset (мультимножина), map (асоціативний масив) і multimap (асоціативний мультимасив). Терміни «мультимножина» і «мультимассив» означають, що ці контейнери допускають дублікати елементів, на відміну від множини й масиву, у яких елементи повинні бути унікальними.
Асоціативні контейнери залежать від двох параметрів – Key (ключ) і Compare (відношення повного впорядкування по ключі Key). Класи set і multiset являють собою «вырожденные» асоціативні контейнери, у яких значення не важливі – всі операції здійснюються через ключі. Контейнер класу set повинен складатися з унікальних ключів, а об’єкт класу multiset допускає дублікати. У класах map й multimap зберігаються пари, що складаються з об’єктів довільного типу Т, пов’язаних з об’єктами класу Key.
Ітератор асоціативного контейнера є двунаправленим. Операція вставки не впливає на коректність ітераторів і посилань на елементи контейнера, операція видалення анулює лише літератори й посилання, установлені на вилучені елементи. Крім того, ітератори асоціативних контейнерів переміщаються по контейнері в порядку зростання ключів.
Адаптери стандартних контейнерів
Шаблонові класи vector, list й deque описують всі основні операції над послідовностями. Хоча вони містять досить велику кількість однакових операцій, по своїй структурі й принципам функціонування жоден із цих класів не можна замінити іншим. Завдяки тому, що в класах vector, list й deque реалізовані базові операції, їх можна використати як основу для створення більше складних структур – стеків і черг. Отже, для правильного визначення об’єктів адаптерів послідовностей у програму необхідно включати два заголовки: один повинен містити визначення шаблонового класу адаптера, а іншої – визначення базисного класу.
Алгоритми і функції стандартної бібліотеки
Алгоритм (algorithm) – це визначення обчислювальної процедури. У бібліотеці STL є група функцій, які виконують деякі стандартні дії, наприклад пошук, перетворення, сортування, копіювання тощо. Вони називаються алгоритмами. Параметрами для алгоритмів, зазвичай, служать ітератори. Алгоритму не цікавлять до типу переданого йому ітератора. Головне, щоб останній підпадав під певну категорію. Приміром, якщо параметром алгоритму може бути односпрямованийитератор, то підставляємий ітератор має бути однонаправленим, або двунаправленним, або житератором довільного доступу
Функціональний об'єкт (functor) – це заховання функції в об'єкті для використання іншими компонентами.
Достоїнства і недоліки об’єктно-орієнтованого стилю програмування.
Об'єктно-орієнтований підхід має такі переваги, як:
- Зменшення складності програмного забезпечення;
- Підвищення надійності програмного забезпечення;
- Забезпечення можливості модифікації окремих компонентів програмного забезпечення без зміни інших його компонентів;
- Забезпечення можливості повторного використання окремих компонентів програмного забезпечення.
Скорочується час на розробку, який може бути віддано іншим завданням.
Компоненти багаторазового використання звичайно містять набагато менше помилок, ніж знову розроблені, адже вони вже не раз піддавалися перевірці.
Коли якийсь компонент використовується відразу декількома клієнтами, поліпшення, що вносяться до його код, одночасно надають позитивний вплив і на безліч працюючих з ним програм.
Якщо програма спирається на стандартні компоненти, її структура і призначений для користувача інтерфейс стають більш уніфікованими, що полегшує її розуміння і спрощує використання.
До недоліків об'єктно-орієнтованого програмування відносяться:
Документування класів – завдання більш важке, ніж це було у випадку процедур та модулів. Оскільки будь-який метод може бути перевизначений, в документації має говоритися не тільки про те, що робить даний метод, але і про те, в якому контексті він викликається. Адже перевизначені методи звичайно викликаються не клієнтом, а самим каркасом. Таким чином, програміст повинен знати, які умови виконуються, коли викликається даний метод. Для абстрактних методів, які порожні, в документації має говоритися про те, для яких цілей передбачається використовувати переобумовлений метод.
Систематичне застосування об'єктно-орієнтованого підходу дозволяє розробляти добре структуровані, надійні в експлуатації, досить просто модифікуються програмні системи. Цим пояснюється інтерес програмістів до об'єктно-орієнтованого підходу й об'єктно-орієнтованим мовам програмування. ООП є одним з напрямків теоретичного і прикладного програмування, що найбільш інтенсивно розвивається.
2. Постановка задачі
Розробити програму, що використовуючи стек виконує такі процедури:
Додає в створену структуру нові елементи.
Видаляє непотрібні елементи.
Виконує пошук серед елементів.
Точний пошук за назвою.
Пошук за яким оборот перевищує задане число.
Пошук за яким виручка перевищує задане число.
Дозволяє коректування (редагування) заданого елемента.
Дозволяє передивитись усі елементи які