Язык программирования C++
Интерфейс стандартной библиотеки C++ определяется следующим набором заголовочных файлов.
| Условный макрос, сравнивающий свой аргумент с нулём | |
| Макрос, содержащий последний номер ошибки | |
| Утилиты обработки исключений | |
|
(C++23) | Библиотека трассировки стека |
| Стандартные объекты исключений | |
|
(C++11) | Определяет std::error_code, платформенно-зависимый код ошибки |
Библиотека строк |
|
| Функции для определения категории узких символов | |
|
(C++17) | std::to_chars и std::from_chars |
| Различные функции обработки узких строковых символов | |
|
(C++11) | Функции преобразования символов Юникода в стиле C в стиле C |
| Различные функции обработки строк широкого и многобайтового типов | |
| Функции определения категории широких символов | |
|
(C++20) | Библиотека форматирования включая std::format |
Шаблон класса std::basic_string |
|
|
(C++17) | Шаблон класса std::basic_string_view |
Библиотека контейнеров |
|
|
(C++11) | Контейнер std::array |
Контейнер std::deque |
|
|
(C++23) | Адаптеры контейнеров std::flat_map и std::flat_multimap |
|
(C++23) | Адаптеры контейнеров std::flat_set и std::flat_multiset |
|
(C++11) | Контейнер std::forward_list |
Контейнер std::list |
|
Ассоциативные контейнеры std::map и std::multimap |
|
|
(C++23) | Вид std::mdspan |
Адаптеры контейнеров std::queue и std::priority_queue |
|
Ассоциативные контейнеры std::set и std::multiset |
|
|
(C++20) | Вид std::span |
Адаптер контейнера std::stack |
|
|
(C++11) | Неупорядоченные ассоциативные контейнеры std::unordered_map и std::unordered_multimap |
|
(C++11) | Неупорядоченные ассоциативные контейнеры std::unordered_set и std::unordered_multiset |
Контейнер std::vector |
|
Библиотека итераторов |
|
| Диапазонные итераторы | |
Библиотека диапазонов |
|
|
(C++23) | Шаблон класса std::generator |
|
(C++20) | Доступ к диапазонам, примитивы, требования, утилиты и адаптеры |
Библиотека алгоритмов |
|
| Алгоритмы, работающие с диапазонами | |
|
(C++17) | Предопределённые стратегии выполнения для параллельных версий алгоритмов |
Библиотека численных методов |
|
|
(C++20) | Функции манипулирования битами |
|
(C++11) | Функции доступа к среде обработки чисел с плавающей точкой |
| Общие математические функции | |
| Тип комплексных чисел | |
|
(C++26) | Основные алгоритмы линейной алгебры |
|
(C++20) | Математические константы |
| Числовые операции над значениями в диапазонах | |
|
(C++11) | Генераторы и распределения случайных чисел |
|
(C++11) | Рациональные арифметические операции во время компиляции |
| Класс для представления и обработки массивов значений | |
Библиотека локализации |
|
| C-функции локализации | |
|
(C++11)(устарело в C++17)(удалено в C++26) | Средства преобразования Unicode |
| Средства локализации | |
|
(C++26) | Идентификация кодировок текста |
Библиотека ввода/вывода |
|
| Функции ввода-вывода в стиле C | |
std::basic_fstream, std::basic_ifstream, std::basic_ofstream шаблоны классов и несколько определений типов |
|
| Вспомогательные функции для управления форматом ввода и вывода | |
std::ios_base класс, std::basic_ios шаблон класса и несколько определений типов |
|
| Декларации всех классов библиотеки ввода/вывода | |
| Несколько стандартных объектов потоков | |
std::basic_istream шаблон класса и несколько определений типов |
|
std::basic_ostream, std::basic_iostream шаблоны классов и несколько определений типов |
|
|
(C++23) | Библиотека форматированного вывода, включающая std::print |
|
(C++23) | std::basic_spanstream, std::basic_ispanstream, std::basic_ospanstream шаблоны классов и определения типов |
std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream шаблоны классов и несколько определений типов |
|
std::basic_streambuf шаблон класса |
|
|
(устарело в C++98) | std::strstream, std::istrstream, std::ostrstream |
|
(C++20) | std::basic_osyncstream, std::basic_syncbuf, и определения типов |
Библиотека файловой системы |
|
|
(C++17) | std::path класс и сопутствующие функции |
Библиотека регулярных выражений |
|
|
(C++11) | Классы, алгоритмы и итераторы для поддержки обработки регулярных выражений |
Библиотека атомарных операций |
|
|
(C++11) | Библиотека атомарных операций |
Библиотека поддержки потоков |
|
|
(C++20) | Барьеры |
|
(C++11) | Условие ожидания потоков |
|
(C++11) | Примитивы для асинхронных вычислений |
|
(C++26) | Указатели-опасности |
|
(C++20) | Защёлки |
|
(C++11) | Примитивы взаимного исключения |
|
(C++26) | Механизмы обновления при чтении-копировании |
|
(C++20) | Семафоры |
|
(C++14) | Общие примитивы взаимного исключения |
|
(C++20) | Маркеры остановки для std::jthread |
|
(C++11) | Класс std::thread и поддерживающие функции |
Заголовки совместимости с C
Для некоторых заголовков стандартной библиотеки C вида xxx.h, стандартная библиотека C++ включает заголовок с таким же именем и другой заголовок вида cxxx (все значимые cxxx заголовки перечислены выше). Предполагается, что использование заголовков вида xxx.h предназначено только для взаимодействия. Возможно, что C++ исходные файлы должны включать один из этих заголовков, чтобы быть валидными по стандарту ISO C. Исходные файлы, которые не предназначены для того, чтобы быть также валидными по ISO C, не должны использовать ни один из заголовков C.
За исключением complex.h, каждый xxx.h заголовок, включенный в стандартную библиотеку C++, помещает в глобальное пространство имён каждое имя, которое соответствующий cxxx заголовок поместил бы в пространство имён std.
Эти заголовки разрешено также объявлять те же имена в пространстве имён std, и соответствующие cxxx заголовки разрешено также объявлять те же имена в глобальном пространстве имён: включение <cstdlib> определённо предоставляет std::malloc и может также предоставить ::malloc. Включение <stdlib.h> определённо предоставляет ::malloc и может также предоставить std::malloc. Это относится даже к функциям и перегрузкам функций, которые не являются частью стандартной библиотеки C.
Примечания: xxx.h заголовки устарели в C++98 и снова актуальны в C++23. Эти заголовки не рекомендуются для чистого кода C++, но не подлежат будущему удалению.
Ведёт себя так же, как <cassert> |
|
Ведёт себя так же, как если бы каждое имя из <cctype> помещалось в глобальное пространство имён |
|
Ведёт себя так же, как <cerrno> |
|
|
(C++11) | Ведёт себя так же, как если бы каждое имя из <cfenv> помещалось в глобальное пространство имён |
Ведёт себя так же, как <cfloat> |
|
|
(C++11) | Ведёт себя так же, как если бы каждое имя из <cinttypes> помещалось в глобальное пространство имён |
Ведёт себя так же, как <climits> |
|
Ведёт себя так же, как если бы каждое имя из <clocale> помещалось в глобальное пространство имён |
|
Ведёт себя так же, как если бы каждое имя из <cmath> помещалось в глобальное пространство имён, кроме имён математических специальных функций |
|
Ведёт себя так же, как если бы каждое имя из <csetjmp> помещалось в глобальное пространство имён |
|
Ведёт себя так же, как если бы каждое имя из <csignal> помещалось в глобальное пространство имён |
|
Ведёт себя так же, как если бы каждое имя из <cstdarg> помещалось в глобальное пространство имён |
|
Ведёт себя так же, как если бы каждое имя из <cstddef> помещалось в глобальное пространство имён, кроме имён std::byte и связанных функций |
|
|
(C++11) | Ведёт себя так же, как если бы каждое имя из <cstdint> помещалось в глобальное пространство имён |
Ведёт себя так же, как если бы каждое имя из <cstdio> помещалось в глобальное пространство имён |
|
Ведёт себя так же, как если бы каждое имя из <cstdlib> помещалось в глобальное пространство имён |
|
Ведёт себя так же, как если бы каждое имя из <cstring> помещалось в глобальное пространство имён |
|
Ведёт себя так же, как если бы каждое имя из <ctime> помещалось в глобальное пространство имён |
|
|
(C++11) | Ведёт себя так же, как если бы каждое имя из <cuchar> помещалось в глобальное пространство имён |
Ведёт себя так же, как если бы каждое имя из <cwchar> помещалось в глобальное пространство имён |
|
Ведёт себя так же, как если бы каждое имя из <cwctype> помещалось в глобальное пространство имён |
Специальные заголовки совместимости с C
Заголовок <stdatomic.h> объявляет имена, которые также предоставляются в стандартной библиотеке C, и определяет макрос _Atomic, который является ключевым словом в C. В отличие от других xxx.h заголовков, соответствующий <cstdatomic> не предоставляется.
|
(C++23) | Определяет _Atomic и предоставляет соответствующие компоненты в стандартной библиотеке C |
Пустые заголовки C
Заголовки <complex.h>, <ccomplex>, <tgmath.h> и <ctgmath> не содержат никакого контента из стандартной библиотеки C, а вместо этого просто включают другие заголовки из стандартной библиотеки C++.
|
(C++11)(устарело в C++17)(удалено в C++20) | Просто включает заголовок <complex> |
|
(C++11) | Просто включает заголовок <complex> |
|
(C++11)(устарело в C++17)(удалено в C++20) | Просто включает заголовки <complex> и <cmath>: перегрузки, эквивалентные содержимому заголовка C tgmath.h, уже предоставляются этими заголовками |
|
(C++11) | Просто включает заголовки <complex> и <cmath> |
Бесполезные заголовки C
Заголовки <ciso646>, <cstdalign> и <cstdbool> бессмысленны в C++, потому что макросы, которые они предоставляют в C, являются ключевыми словами языка C++.
|
(удалено в C++20) | Пустой заголовок. Макросы, которые появляются в iso646.h в C, являются ключевыми словами в C++ |
|
(C++11)(устарело в C++17)(удалено в C++20) | Определяет одну макроконстанту совместимости |
|
(C++11)(устарело в C++17)(удалено в C++20) | Определяет одну макроконстанту совместимости |
| Не оказывает никакого влияния | |
|
(C++11) | Определяет одну макроконстанту совместимости |
|
(C++11) | Определяет одну макроконстанту совместимости |
Неподдерживаемые заголовки C
Заголовки C <stdatomic.h>,(до C++23) <stdnoreturn.h> и <threads.h> не включены в C++ и не имеют cxxx эквивалентов.
Экспериментальные библиотеки
C++ TR/TS также определяют несколько наборов заголовков.
См. также
| Документация C для заголовков стандартной библиотеки C |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/header