Розділ ІІІ. МОВИ ПРОГРАМУВАННЯ С ТА С++
Мова С++ була створена Б. Страуструпом у 1979 р. як об'єктно- орієнтований варіант мови C. Надалі обидві мови розвивалися, впли- ваючи одна на одну. У 1998 р. був прийнятий ANSI/ISO-стандарт мо- ви С++, побудований на основі C89, а в 1999 р. – новий ANSI/ISO- стандарт для мови C – C99. Ця версія мала нові можливості, деякі з них були запозичені зі стандарту C++ 1998 р., а деякі – нові. У C99 є незначна кількість конструкцій, не сумісних зі стандартом C++ 1998 р. Опис їх можна знайти в [133]. Якщо їх відкинути, то отрима- ємо власно С, що дає можливість писати С-програми таким чином, щоб вони задовольняли стандарти обох мов С/C++. Отже, мову С++ умовно можна розділити на три частини:
С++ = С + додаткові (не ООП) можливості + ООП
Розпочнемо розгляд мови С++ із другої частини, тобто з нових, не об'єктно-орієнтованих, її можливостей.
3.10.1. СТАНДАРТНІ БІБЛІОТЕКИ С++
Як і в C, у C++ немає операцій, що забезпечують введення-виведення, роботу з рядками, здійснюють математичні розрахунки тощо. Усі ці опе- рації виконуються за рахунок використання набору бібліотечних функ- цій, що підтримуються компілятором. У C++ існують два основні типи бібліотек: бібліотеки С та C++. Бібліотеки в C++, як і в C, активізуються за допомогою директиви препроцесора #include, але їхні імена не мають розширення .h. Однак його додання не викличе помилки.
Значна частина бібліотеки C++ заснована на бібліотеці шаблонів
STL (англ. – Standard Template Library). Вона надає такі важливі засо-
би, як контейнери – вектори (std::vector<>), списки (std::list<>),
стеки (std::stack<>), черги (std::queue<>), рядки (std::string),
множини (std::set<>) тощо – та ітератори, що дають доступ до кон- тейнерів та інших інструментів. Детальніше з рядками можна озна- йомитися нижче, а з контейнерними типами – у підрозд. 4.3.5.
У стандартній C++ уся інформація, пов'язана зі стандартною біблі- отекою, визначена в просторі імен std. Для отримання прямого до- ступу до елементів стандартної бібліотеки потрібно перед назвою еле- мента зазначати ім'я простору, наприклад std::cout, або після вклю- чення потрібного заголовку використати оператор using:
using namespaсe std;.
Зауважимо, що деякі застарілі компілятори C++ не підтримують команду namespace і заголовки без зазначення розширення. При ви-