У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


із стандартною бібліотекою С++, ми позбавлені від необхідності винаходити колесо. Засоби стандартної бібліотеки покликані спростити роботу над проектом і підвищити надійність створюваних програмних продуктів.

Що таке стандартна бібліотека С++

Стандартна бібліотека С++ покликана виконувати два основні завдання. Перш за все - це набір стандартних типів даних і функцій, готових до вживання в будь-якому компіляторі, який відповідає вимогам міжнародних стандартів мови С++.

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

Стандартною називається бібліотека, склад, призначення і принципи використання якої визначаються затвердженою документацією, наприклад стандартами Міжнародної організації стандартизації (ISO - International Standards Organization). Нижче мова піде про стандартну бібліотеку С++, властивості якої описані в спеціальному документі ISO. Називатимемо її просто стандартною бібліотекою.

Про компілятор говорять, що він відповідає стандартам, якщо він і його вбудовані бібліотеки функціонують відповідно до міжнародних стандартів ISO для мови програмування С++.

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

Частини стандартної бібліотеки

Стандартна бібліотека С++ насправді складається з десяти невеликих бібліотек.

Бібліотека мовної підтримки, яка містить типи і функції, безпосередньо пов'язані з роботою компілятора мови програмування С++. Наприклад, в цю бібліотеку входять константи, що визначають діапазони і рівень точності обчислень функцій, що використовують значення з плаваючою комою.

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

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

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

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

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

Бібліотека ітераторів підтримує функції навігації по колекції об'єктів.

Бібліотека алгоритмів містить багато стандартних алгоритмів обробки даних.

Бібліотека чисел надає користувачам комплексні числа, спеціальні типи числових масивів і алгоритми обчислень.

Бібліотека введення-висновку пропонує засоби форматування і управління операціями введення і виведення даних у файли і інші пристрої.

1.2. Різниця між стандартною бібліотекою і STL

Стандартну бібліотеку шаблонів ще називають бібліотекою STL (Standard Template Library). Під цим терміном розуміють набір інтерфейсів і компонентів, розроблених Олександром Степановим (Alexander Stepanov) і іншими співробітниками At&t Bell Laboratories і Hewlett-packard Research Laboratories. Степанов поставив перед собою мету створити стандартний набір компонентів багаторазового використання, максимально реалізувавши всі можливості родового програмування. На сьогоднішній день бібліотека STL включає бібліотеки контейнерів, ітераторів, алгоритмів і деякі частини бібліотеки загального користування, які, у свою чергу, є складовими частинами стандартної бібліотеки С++. Іншими словами, стандартна бібліотека шаблонів STL є складовою частиною бібліотеки С++, але при цьому вельми істотною частиною. Велика частина цієї книги присвячена вивченню використання засобів бібліотеки STL.

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

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

Ядро бібліотеки утворять три елементи: контейнери, алгоритми і ітератори.

Контейнери (containers) – це об'єкти, призначені для збереження інших елементів. Наприклад: вектор, лінійний список, множина.

Асоціативні контейнери (associative containers) дозволяють за допомогою ключів одержати швидкий доступ до значень, що зберігаються в них.

У кожному класі-контейнері визначений набір функцій для роботи з ними. Наприклад: список містить функції для вставки, видалення і злиття елементів.

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

Ітератори (iterators) – це об'єкти, що стосовно контейнера відіграють роль покажчиків. Вони дозволяють одержати доступ до вмісту контейнера приблизно так, як покажчики використовуються для доступу до елементів масиву.

З ітераторами можна працювати так само, як з покажчиками. До них можна застосувати операції *, інкремента, декремента. Типом ітератор являється тип iterator, що визначений у різних контейнерах.

Існує п'ять типів ітераторів:

1.Ітератори вводу (input_iterator) підтримують операції рівності, розіменування та інкремента.

==, !=, *i, ++i, i++, *i++

Спеціальним випадком ітератора вводу є istream_iterator.

2.Ітератори виводу (output_iterator) підтримують операції розіменування, припустиме тільки з лівої сторони присвоювання та інкремента.

++i, i++, *i=t, *i++=t

Спеціальним випадком ітератора виводу є ostream_iterator.

3.Односпрямовані літератори (forward_iterator) підтримують всі операції ітераторів вводу/виводу і, крім того, дозволяють без обмеження застосовувати присвоювання:

==, !=, =, *i, ++i, i++, *i++

4.Двохнаправлені літератори (biderectional_iterator) мають усі властивості forward-ітераторів, а також мають додаткову операцію декремента (--i, i--, *i--), що дозволяє їм проходити контейнер в обох напрямках.

5.Ітератори довільного доступу (random_access_iterator) мають усі властивості biderectional-ітераторів, а також підтримують операції порівняння та адресної арифметики, а саме безпосередній доступ за індексом.

i+=n, i+n, i-=n, i-n, i1-i2, i[n], i1<i2, i1<=i2, i1>i2, i1>=i2

У STL також підтримуються зворотні ітератори (reverse iterators). Зворотніми ітераторами можуть бути або двонаправлені ітератори, або ітератори довільного доступу, але минаючі послідовність у зворотному напрямку.

Надодачу до контейнерів, алгоритмів і ітераторів у STL підтримується ще кілька стандартних компонентів. Головними серед них


Сторінки: 1 2 3 4 5