В языке программирования C++ термин Стандартная библиотека означает коллекцию классов и функций, написанных на базовом языке. Стандартная библиотека поддерживает несколько основных контейнеров, функций для работы с этими контейнерами, объектов-функции, основных типов строк и потоков (включая интерактивный и файловый ввод-вывод), поддержку некоторых языковых особенностей, и часто используемые функции для выполнения таких задач, как, например, нахождение квадратного корня числа. Стандартная библиотека языка C++ также включает в себя спецификации стандарта ISO C90 стандартной библиотеки языка Си. Функциональные особенности Стандартной библиотеки объявляются внутри пространства имёнstd.
Стандартная библиотека шаблонов (STL) — подмножество стандартной библиотеки C++. Содержит контейнеры, алгоритмы, итераторы, объекты-функции и т. д.[1], хотя некоторые программисты используют термин «STL» вместе (или попеременно) с термином «Стандартная библиотека C++».
Заголовочные файлы стандартной библиотеки C++ не имеют расширения «.h».
Стандартная библиотека C++ содержит последние расширения C++ стандарта ANSI (включая библиотеку стандартных шаблонов и новую библиотеку iostream). Она представляет собой набор файлов заголовков. В новых файлах заголовков отсутствует расширение H.[2]
Реализации
Заброшенные
Стандартная библиотека Apache
Была разработана фирмой Rogue Wave Software, позже была передана Apache Software Foundation.[3] Однако спустя 5 лет с момента выхода последней версии было решено закончить работу над проектом и переместить его в Apache Attic.[4]
Смотрите также
Следующие библиотеки реализуют значительную часть стандартной библиотеки C++:
Стандартные заголовочные файлы
Нижеперечисленные файлы содержат объявления Стандартной библиотеки.
Контейнеры
- Реализует специализированный класс контейнеров
std::bitset— битовый массив. - Реализует шаблон класса контейнера
std::deque— двусвязная очередь. - Реализует шаблон класса контейнера
std::list— двусвязный список. - Реализует шаблоны классов контейнеров
std::mapиstd::multimap— Ассоциативный массив и мультиотображение. - Реализует класс адаптер-контейнера
std::queue— односторонняя очередь. - Реализует шаблоны классов контейнеров
std::setиstd::multiset— сортированные ассоциативные контейнеры или множества. - Реализует класс адаптер-контейнера
std::stack— стек. - Реализует шаблон класса контейнеров
std::vector— динамический массив.
Общие
- Реализует определения многих алгоритмов для работы с контейнерами.
- Реализует несколько объект-функций, разработанных для работы со стандартными алгоритмами.
- Реализует классы и шаблоны для работы с итераторами.
- Реализует классы и шаблоны для работы с локалями.
- Реализует инструменты управления памятью в C++, включая шаблон класса
std::auto_ptr. - Содержит стандартную обработку ошибок классов, например,
std::logic_errorиstd::runtime_error, причем оба происходят изstd::exception. - Реализует шаблон класса
std::pairдля работы с парами (двучленными кортежами) объектов.
Строковые
- Реализует стандартные строковые классы и шаблоны.
- Новое в C++11. Предоставляет утилиты для сопоставления строк с шаблоном с помощью регулярных выражений.
Поточные и ввода-вывода
- Реализует инструменты для файлового ввода и вывода. Смотрите fstream.
- Реализует несколько типов и функций, составляющих основу операций с iostreams.
- Реализует основы ввода и вывода языка C++. Смотрите iostream.
- Реализует предварительные объявления нескольких шаблонов классов, связанных с вводом-выводом.
- Реализует инструменты для работы с форматированием вывода, например базу, используемую при форматировании целых и точных значений чисел с плавающей запятой.
- Реализует шаблон класса
std::istreamи других необходимых классов для ввода. - Реализует шаблон класса
std::ostreamи других необходимых классов для вывода. - Реализует шаблон класса
std::sstreamи других необходимых классов для работы со строками.
Числовые
- Реализует шаблон класса
std::complexи связанные функции для работы с комплексными числами. - Реализует алгоритмы для числовой обработки
- Реализует шаблон класса
std::valarray— класс массивов, оптимизированный для числовой обработки.
Языковая поддержка
- Реализует несколько типов и функций, связанных с обработкой исключений, включая
std::exception— базовый класс всех перехватов исключений в Стандартной Библиотеке. - реализует шаблон класса
std::numeric_limits, используемый для описания свойств базовых числовых типов. - Реализует операторы
newиdelete, а также другие функции и типы, составляющие основу управления памятью в C++. - Реализует инструменты для работы с динамической идентификацией типа данных в C++.
Стандартная Библиотека языка Си
Каждый заголовочный файл из стандартной библиотеки языка Си включен в стандартную библиотеку языка C++ под различными именами, созданными путём отсечения расширения .h и добавлением 'c' в начале, например, 'time.h' стал 'ctime'. Единственное различие между этими заголовочными файлами и традиционными заголовочными файлами стандартной библиотеки языка Си заключается в том, что функции должны быть помещены в пространство имен std:: (хотя некоторые компиляторы сами делают это). В стандарте ISO C функции стандартной библиотеки разрешены для реализации макросами, которые не разрешены в ISO C++.
- <cassert>
- <cctype>
- <cerrno>
- <cfloat>
- <climits>
- <cmath>
- <csetjmp>
- <csignal>
- <cstdlib>
- <cstddef>
- <cstdarg>
- <cstdio>
- <cstring>
- <ctime>
- <cwchar>
См. также
- Стандартная библиотека Apache C++ (stdcxx)
- Boost (библиотека)
- C++ Technical Report 1
- C POSIX library
- Стандартная библиотека
Литература
- Бьёрн Страуструп: Язык программирования C++, Addison-Wesley, ISBN 0-201-70073-5
Ссылки
- Microsoft MSDN Library — Справочник по Стандартной библиотеке C++
- Справочник по Стандартной библиотеке C++
- The GNU Standard C++ Library
- STLport
- Dinkumware Standard C++ Library
- Общие сведения о языке программирования C++ и stl библиотеках
Примечания
- ↑Holzner, Steven. C++ : Black Book. — Scottsdale, Ariz. : Coriolis Group, 2001. — P. 648. — «The STL is made up of containers, iterators, function objects, and algorithms». — ISBN 1-57610-777-9.
- ↑Изменения стандартной библиотеки C++
- ↑Apache C++ Standard Library. Дата обращения: 17 апреля 2023. Архивировано 8 апреля 2023 года.
- ↑Brett Porter. Apache C++ Standard Library and the Attic. stdcxx-dev mailing list (18 июля 2013). Дата обращения: 27 февраля 2014. Архивировано 22 сентября 2013 года.