Стандартная библиотека языка C++

В языке программирования C++ термин Стандартная Библиотека означает коллекцию классов и функций, написанных на базовом языке. Стандартная Библиотека поддерживает несколько основных контейнеров, функций для работы с этими контейнерами, объектов-функции, основных типов строк и потоков (включая интерактивный и файловый ввод-вывод), поддержку некоторых языковых особенностей, и часто используемые функции для выполнения таких задач, как, например, нахождение квадратного корня числа. Стандартная Библиотека языка C++ также включает в себя спецификации стандарта ISO C90 стандартной библиотеки языка Си. Функциональные особенности Стандартной Библиотеки объявляются внутри пространства имен std.

Стандартная библиотека шаблонов (STL) — подмножество стандартной библиотеки C++ и содержит контейнеры, алгоритмы, итераторы, объекты-функции и т. д.[1], хотя некоторые программисты используют термин «STL» вместе (или попеременно) с термином «Стандартная библиотека C++».

Заголовочные файлы стандартной библиотеки C++ не имеют расширения «.h».

Стандартная библиотека C++ содержит последние расширения C++ стандарта ANSI (включая библиотеку стандартных шаблонов и новую библиотеку iostream). Она представляет собой набор файлов заголовков. В новых файлах заголовков отсутствует расширение H.[2]

Реализации править

Название Организация Домашнаяя страница Акроним Лицензия Последний выпуск
Стандартная библиотека GNU GNU Project и Free Software Foundation [1] libstdc++ GPLv3 3 февраля 2016; 8 лет назад (2016-02-03)
Стандартная библиотека LLVM LLVM Developer Group [2] libc++ Apache License 2.0 with LLVM Exceptions Каждые 2 недели
Стандартная библиотека NVIDIA Nvidia [3] libcu++ Apache License 2.0 with LLVM Exceptions 15 марта 2023; 13 месяцев назад (2023-03-15)
Стандартная библиотека Microsoft Microsoft [4] MSVC STL Apache License 2.0 with LLVM Exceptions Ежедневно
Стандартная библиотека HPX для параллелизма и многопоточности STELLAR Group [5] HPX Boost Software License 1.0 6 августа 2022; 20 месяцев назад (2022-08-06)
Electronic Arts STL Electronic Arts [6] EASTL BSD 3-Clause License 20 октября 2021; 2 года назад (2021-10-20)
Dinkum Dinkumware [7] Неизвестно Коммерческая Неизвестно
Стандартная библиотека Cray Cray User Group [8] Неизвестно Коммерческая Неизвестно

Заброшенные править

Стандартная библиотека Apache править

Была разработана фирмой Rogue Wave Software, позже была передана Apache Software Foundation.[3] Однако спустя 5 лет с момента выхода последней версии было решено закончить работу над проектом и переместить его в Apache Attic.[4]

Смотрите также править

Следующие библиотеки реализуют значительную часть стандартной библиотеки C++:

Название Домашняя страница Описание
Abseil [9] Коллекция библиотек, которая используется в проектах Google
Folly [10] Набор библиотек C++14 которые используются Facebook
Bareflank Support Library [11] Библиотека, в которой все возможно исполнить на этапе компиляции


Стандартные заголовочные файлы править

Нижеперечисленные файлы содержат объявления Стандартной Библиотеки.

Контейнеры править

<bitset>
Реализует специализированный класс контейнеров std::bitset — битовый массив.
<deque>
Реализует шаблон класса контейнера std::deque — двусвязная очередь.
<list>
Реализует шаблон класса контейнера std::list — двусвязный список.
<map>
Реализует шаблоны классов контейнеров std::map и std::multimapАссоциативный массив и мультиотображение.
<queue>
Реализует класс адаптер-контейнера std::queue — односторонняя очередь.
<set>
Реализует шаблоны классов контейнеров std::set и std::multiset — сортированные ассоциативные контейнеры или множества.
<stack>
Реализует класс адаптер-контейнера std::stack — стек.
<vector>
Реализует шаблон класса контейнеров std::vector — динамический массив.

Общие править

<algorithm>
Реализует определения многих алгоритмов для работы с контейнерами.
<functional>
Реализует несколько объект-функций, разработанных для работы со стандартными алгоритмами.
<iterator>
Реализует классы и шаблоны для работы с итераторами.
<locale>
Реализует классы и шаблоны для работы с локалями.
<memory>
Реализует инструменты управления памятью в C++, включая шаблон класса std::auto_ptr.
<stdexcept>
Содержит стандартную обработку ошибок классов, например, std::logic_error и std::runtime_error, причем оба происходят из std::exception.
<utility>
Реализует шаблон класса std::pair для работы с парами (двучленными кортежами) объектов.

Строковые править

<string>
Реализует стандартные строковые классы и шаблоны.

<regex>

Новое в C++11. Предоставляет утилиты для сопоставления строк с шаблоном с помощью регулярных выражений.

Поточные и ввода-вывода править

<fstream>
Реализует инструменты для файлового ввода и вывода. Смотрите fstream.
<ios>
Реализует несколько типов и функций, составляющих основу операций с iostreams.
<iostream>
Реализует основы ввода и вывода языка C++. Смотрите iostream.
<iosfwd>
Реализует предварительные объявления нескольких шаблонов классов, связанных с вводом-выводом.
<iomanip>
Реализует инструменты для работы с форматированием вывода, например базу, используемую при форматировании целых и точных значений чисел с плавающей запятой.
<istream>
Реализует шаблон класса std::istream и других необходимых классов для ввода.
<ostream>
Реализует шаблон класса std::ostream и других необходимых классов для вывода.
<sstream>
Реализует шаблон класса std::sstream и других необходимых классов для работы со строками.
<streambuf>

Числовые править

<complex>
Реализует шаблон класса std::complex и связанные функции для работы с комплексными числами.
<numeric>
Реализует алгоритмы для числовой обработки
<valarray>
Реализует шаблон класса std::valarray — класс массивов, оптимизированный для числовой обработки.

Языковая поддержка править

<exception>
Реализует несколько типов и функций, связанных с обработкой исключений, включая std::exception — базовый класс всех перехватов исключений в Стандартной Библиотеке.
<limits>
реализует шаблон класса std::numeric_limits, используемый для описания свойств базовых числовых типов.
<new>
Реализует операторы new и delete, а также другие функции и типы, составляющие основу управления памятью в C++.
<typeinfo>
Реализует инструменты для работы с динамической идентификацией типа данных в C++.

Стандартная Библиотека языка Си править

Каждый заголовочный файл из стандартной библиотеки языка Си включен в стандартную библиотеку языка C++ под различными именами, созданными путём отсечения расширения .h и добавлением 'c' в начале, например, 'time.h' стал 'ctime'. Единственное отличие между этими заголовочными файлами и традиционными заголовочными файлами стандартной библиотеки языка Си заключается в том, что функции должны быть помещены в пространство имен std:: (хотя некоторые компиляторы сами делают это). В стандарте ISO C функции стандартной библиотеки разрешены для реализации макросами, которые не разрешены в ISO C++.

См. также править

Литература править

Ссылки править

Примечания править

  1. 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.
  2. Изменения стандартной библиотеки C++
  3. Apache C++ Standard Library. Дата обращения: 17 апреля 2023. Архивировано 8 апреля 2023 года.
  4. Brett Porter. Apache C++ Standard Library and the Attic. stdcxx-dev mailing list (18 июля 2013). Дата обращения: 27 февраля 2014. Архивировано 22 сентября 2013 года.