русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Підсумок


Дата додавання: 2014-04-22; переглядів: 1300.


STL складається з трьох основних компонентів: контейнерів, алгоритмів та ітераторів. Контейнери поділяються на дві групи: послідовні та асоціативні. Послідовними є вектори, списки і черги з двостороннім доступом. Асоціативні контейнери – це множини та відображення, а також тісно з ними зв’язані мультимножини і мультивідображення.

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

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

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

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

Контейнери і алгоритми STL працюють з даними будь-яких типів, класів, взагалі з чим завгодно при наявності перезавантажених операцій типу <.

Поведінка окремих алгоритмів, таких як find_if(), може бути змінена за допомогою функціональних об’єктів. Функціональні об’єкти реалізуються за допомогою класів, що містять лише один оператор ().

 

Питання по темі

1. Перелічіть послідовні контейнери STL

а. вектор, список, черга з двостороннім доступом

б. вектор, множина, алгоритм

в. множина, мультимножина, однозв’язний список

 

2. Асоціативні контейнери STL:

а. множина, мультимножина, відображення, мультивідображення

б. двозв’язний список, черга

в. вектор, список, масив

 

3. Алгоритм STL – це

а. незалежна функція для роботи з контейнерами

б. зв’язуючий елемент між методами і контейнерами

в. функція, дружня до відповідних класів контейнерів

г. метод відповідних контейнерів.

 

 

4. Алгоритм find()

а. здійснює пошук підходящих послідовностей елементів у двох контейнерів

б. здійснює пошук контейнера, що відповідає заданому

в. в якості перших двох елементів використовує ітератори

г. в якості перших двох аргументів використовує елементи контейнера

 

5. Чи істинне твердження: алгоритми можуть використовуватися лише з контейнерами STL?

а. так

б. ні

 

6. Діапазон часто задається в алгоритмі двома значеннями типу

а. ітераторів

б. вказівників

в. елементів масиву

 

7. Що використовується для зміни поведінки алгоритму?

а. функціональний об’єкт

б. коригуючий алгоритм

в. дружня функція

 

8. Вектор є підходящим контейнером, якщо користувач збирається:

а. вставляти нові елементи в довільні місця контейнера

б. вставляти нові елементи завжди в кінець або початок контейнера

в. має індекс і хоче дістати швидкий доступ до елемента з цим індексом

г. має ключове значення елемента і хоче дістати швидкий доступ до елемента з цим ключем.

 

9. Чи істинне твердження, що back() видаляє елементи з кінця контейнера?

а. так, це руйнуючий метод

б. ні, він просто повертає значення

 

10. Алгоритм unique() видаляє всі___________ елементи з контейнера

а. неунікальні

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

в. перший елемент контейнера

г. останній елемент контейнера

 

11. Чи істинне твердження, що ітератор завжди може зсовуватися як у прямому, так і у зворотньому напрямку по контейнеру?

а. так, завжди

б. ні, ніколи

в. залежно від типу контейнеру

 

12. Нехай iter – це ітератор контейнера. Який вираз має значенням об’єкт, на який посилається iter, і змушує потім зсунутися iter на наступний елемент контейнера?

а. *iter++

б. *iter

в. **iter

 

13. Алгоритм copy() повертає ітератор на

а. останній елемент, з якого відбувалося копіювання

б. останній елемент, в який проводилося копіювання

в. елемент, що розміщувався після останнього елементу, з якого відбувалося копіювання

г. елемент, що розміщувався після останнього елементу, з якого відбувалося копіювання

 

14. Для того, щоб використовувати reverse_iterator, необхідно:

а. почати з ініціалізації його значенням end()

б. почати з ініціалізації його значенням rend()

в. інкрементувати його для зсуву назад по контейнеру

г. декрементувати його для зсуву назад по контейнеру

 

15. Чи істинне твердження про те, що ітератор back_inserter завжди приводить до того, що новий елемент вставляється після існуючого?

а. так

б. ні

 

16. В асоціативному контейнері

а. значення зберігаються у впорядкованому (просортованому) вигляді

б. ключі впорядковані

в. сортування завжди відбувається в алфавітному порядку або в порядку зростання числових значень

г. необхідно використовувати алгоритм sort() для сортування

 

17. Чи істинне твердження: відображення може мати два чи більше елементів з однаковими ключами?

а. так

б. ні

 

18. При визначенні множини необхідно вказувати спосіб

а. впорядковування елементів

б. додавання елементів

в. вилучення елементів

 

19. Якщо в контейнері зберігаються не елементи, а вказівники на них. то:

а. об’єкти не будуть копіюватися при їх додаванні в контейнер

б. можуть використовуватися лише асоціативні контейнера

в. неможливе сортування за атрибутами об’єкта

г. контейнери будуть займати менше пам’яті

 

20. Якщо ми хочемо, щоб асоціативний контейнер типу set здійснював автоматичне сортування своїх значень, можна визначити порядок сортування спеціальним функціональним об’єктом і вказати його серед ___________ контейнера

а. конструкторів

б. перезавантажених операторів порівняння

в. методів

 



<== попередня лекція | наступна лекція ==>
Функціональний об’єкт comparePersons() | Тема 16 –Багатофайлові програми


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн