Spec-Zone.ru › C++

Заголовочные файлы стандартной библиотеки C++

Интерфейс стандартной библиотеки C++ определяется следующим набором заголовочных файлов.

Библиотека концепций

<concepts>
(C++20)
Основные библиотечные концепции

Библиотека сопроцедур

<coroutine>
(C++20)
Библиотека поддержки сопроцедур

Библиотека утилит

<any>
(C++17)
std::any класс
<bitset>
std::bitset шаблон класса
<chrono>
(C++11)
Утилиты времени C++
<compare>
(C++20)
Поддержка операторов трёхстороннего сравнения операторов сравнения
<csetjmp>
Макрос (и функция), сохраняющий (и переходящий) в контекст выполнения
<csignal>
Функции и макроконстанты для управления сигналами
<cstdarg>
Обработка списков аргументов переменной длины
<cstddef>
Стандартные макросы и типы
<cstdlib>
Утилиты общего назначения: управление программой, динамическое выделение памяти, случайные числа, сортировка и поиск
<ctime>
Утилиты времени/даты в стиле C
<debugging>
(C++26)
Библиотека отладки
<expected>
(C++23)
std::expected шаблон класса
<functional>
Объекты функций, вызовы функций, операции привязки и оболочки ссылок
<initializer_list>
(C++11)
std::initializer_list шаблон класса
<optional>
(C++17)
std::optional шаблон класса
<source_location>
(C++20)
Предоставляет средства получения местоположения исходного кода места исходного кода
<tuple>
(C++11)
std::tuple шаблон класса
<type_traits>
(C++11)
Информация о типах во время компиляции
<typeindex>
(C++11)
std::type_index
<typeinfo>
Утилиты информации о типах во время выполнения
<utility>
Различные компоненты утилит
<variant>
(C++17)
std::variant шаблон класса
<version>
(C++20)
Предоставляет реализующую зависимую библиотечную информацию
Управление динамической памятью
<memory>
Утилиты для управления памятью высокого уровня
<memory_resource>
(C++17)
Полиморфные аллокаторы и ресурсы памяти
<new>
Утилиты для управления памятью низкого уровня
<scoped_allocator>
(C++11)
Вложенный класс аллокатора
Числовые пределы
<cfloat>
Пределы типов с плавающей точкой
<cinttypes>
(C++11)
Макросы форматирования, intmax_t и uintmax_t математические операции и преобразования
<climits>
Пределы целочисленных типов
<cstdint>
(C++11)
Целочисленные типы с фиксированной шириной и пределы других типов
<limits>
Единый способ запроса свойств арифметических типов
<stdfloat>
(C++23)
Дополнительные типы с плавающей точкой
Обработка ошибок
END_OF_DOCUMENT_MARKER
<cassert>
Условно компилируемая макрокоманда, которая сравнивает свой аргумент с нулём
<cerrno>
Макрокоманда, содержащая последний номер ошибки
<exception>
Средства обработки исключений
<stacktrace>
(C++23)
Библиотека Stacktrace
<stdexcept>
Стандартные объекты исключений
<system_error>
(C++11)
Определяет std::error_code, платформенно-зависимый код ошибки

Библиотека строк

<cctype>
Функции для определения категории узких символов
<charconv>
(C++17)
std::to_chars и std::from_chars
<cstring>
Различные функции обработки строк узких символов
<cuchar>
(C++11)
Функции преобразования Unicode символов в стиле C многобайтовые функции
<cwchar>
Различные широкие и многобайтовые функции обработки строк
<cwctype>
Функции для определения категории широких символов
<format>
(C++20)
Библиотека форматирования, включая std::format
<string>
Шаблон класса std::basic_string
<string_view>
(C++17)
Шаблон класса std::basic_string_view

Библиотека контейнеров

<array>
(C++11)
Контейнер std::array
<deque>
Контейнер std::deque
<flat_map>
(C++23)
Контейнеры std::flat_map и std::flat_multimap
<flat_set>
(C++23)
Контейнеры std::flat_set и std::flat_multiset
<forward_list>
(C++11)
Контейнер std::forward_list
<list>
Контейнер std::list
<map>
Ассоциативные контейнеры std::map и std::multimap
<mdspan>
(C++23)
std::mdspan представление
<queue>
Контейнеры-адаптеры std::queue и std::priority_queue
<set>
Ассоциативные контейнеры std::set и std::multiset
<span>
(C++20)
std::span представление
<stack>
Адаптер контейнера std::stack
<unordered_map>
(C++11)
Неупорядоченные ассоциативные контейнеры std::unordered_map и std::unordered_multimap
<unordered_set>
(C++11)
Неупорядоченные ассоциативные контейнеры std::unordered_set и std::unordered_multiset
<vector>
Контейнер std::vector

Библиотека итераторов

<iterator>
Итераторы диапазонов

Библиотека диапазонов

<generator>
(C++23)
Шаблон класса std::generator
<ranges>
(C++20)
Доступ к диапазонам, примитивы, требования, вспомогательные функции и адаптеры

Библиотека алгоритмов

<algorithm>
Алгоритмы, работающие с диапазонами
<execution>
(C++17)
Предварительно определённые политики выполнения для параллельных версий алгоритмов

Библиотека чисел

<bit>
(C++20)
Функции обработки битов
<cfenv>
(C++11)
Функции доступа к среде с плавающей запятой
<cmath>
Общие математические функции
<complex>
Тип комплексных чисел
<linalg>
(C++26)
Основные алгоритмы линейной алгебры
<numbers>
(C++20)
Математические константы
<numeric>
Числовые операции над значениями в диапазонах
<random>
(C++11)
Генераторы и распределения случайных чисел
<ratio>
(C++11)
Рациональная арифметика во время компиляции
<valarray>
Класс для представления и обработки массивов значений

Библиотека локализации

<clocale>
Средства локализации C
<codecvt>
(C++11)(устарело в C++17)(удалено в C++26)
Средства преобразования Юникода
<locale>
Средства локализации
<text_encoding>
(C++26)
Идентификация кодировок текста

Библиотека ввода/вывода

<cstdio>
Функции ввода-вывода в стиле C
<fstream>
Шаблоны классов и несколько определений типов
<iomanip>
Вспомогательные функции для управления форматом ввода и вывода
<ios>
Класс и шаблон класса, а также несколько определений типов
<iosfwd>
Объявления-заглушки всех классов в библиотеке ввода/вывода
<iostream>
Несколько стандартных объектов потоков
<istream>
Шаблон класса и несколько определений типов
<ostream>
Шаблоны классов и несколько определений типов
<print>
(C++23)
Библиотека форматированного вывода, включая std::print
<spanstream>
(C++23)
Шаблоны классов и определения типов
<sstream>
Шаблоны классов и несколько определений типов
<streambuf>
Шаблон класса
<strstream>
(устарело в C++98)
<syncstream>
(C++20)
и определения типов

Библиотека файловой системы

<filesystem>
(C++17)
Класс и поддерживающие функции

Библиотека регулярных выражений

<regex>
(C++11)
Классы, алгоритмы и итераторы для поддержки обработки регулярных выражений

Библиотека атомных операций

<atomic>
(C++11)
Библиотека атомных операций

Библиотека поддержки потоков

<barrier>
(C++20)
Барьеры
<condition_variable>
(C++11)
Условия ожидания потоков
<future>
(C++11)
Примитивы для асинхронных вычислений
<hazard_pointer>
(C++26)
Указатели опасностей
<latch>
(C++20)
Защелки
<mutex>
(C++11)
Примитивы взаимного исключения
<rcu>
(C++26)
Механизмы read-copy update
<semaphore>
(C++20)
Семафоры
<shared_mutex>
(C++14)
Примитивы разделяемой взаимной исключительности
<stop_token>
(C++20)
Маркеры остановки для std::jthread
<thread>
(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++ кода, но не подлежат будущему удалению.

<assert.h>
Ведет себя так же, как <cassert>
<ctype.h>
Ведёт себя так, как будто каждое имя из <cctype> помещено в глобальное пространство имён
<errno.h>
Ведет себя так же, как <cerrno>
<fenv.h>
(C++11)
Ведёт себя так, как будто каждое имя из <cfenv> помещено в глобальное пространство имен
<float.h>
Ведет себя так же, как <cfloat>
<inttypes.h>
(C++11)
Ведёт себя так, как будто каждое имя из <cinttypes> помещено в глобальное пространство имен
<limits.h>
Ведет себя так же, как <climits>
<locale.h>
Ведёт себя так, как будто каждое имя из <clocale> помещено в глобальное пространство имен
<math.h>
Ведёт себя так, как будто каждое имя из <cmath> помещено в глобальное пространство имен,
за исключением имён математических специальных функций
<setjmp.h>
Ведёт себя так, как будто каждое имя из <csetjmp> помещено в глобальное пространство имен
<signal.h>
Ведёт себя так, как будто каждое имя из <csignal> помещено в глобальное пространство имен
<stdarg.h>
Ведёт себя так, как будто каждое имя из <cstdarg> помещено в глобальное пространство имен
<stddef.h>
Ведёт себя так, как будто каждое имя из <cstddef> помещено в глобальное пространство имен,
за исключением имён std::byte и связанных функций
<stdint.h>
(C++11)
Ведёт себя так, как будто каждое имя из <cstdint> помещено в глобальное пространство имен
<stdio.h>
Ведёт себя так, как будто каждое имя из <cstdio> помещено в глобальное пространство имен
<stdlib.h>
Ведёт себя так, как будто каждое имя из <cstdlib> помещено в глобальное пространство имен
<string.h>
Ведёт себя так, как будто каждое имя из <cstring> помещено в глобальное пространство имен
<time.h>
Ведёт себя так, как будто каждое имя из <ctime> помещено в глобальное пространство имен
<uchar.h>
(C++11)
Ведёт себя так, как будто каждое имя из <cuchar> помещено в глобальное пространство имен
<wchar.h>
Ведёт себя так, как будто каждое имя из <cwchar> помещено в глобальное пространство имен
<wctype.h>
Ведёт себя так, как будто каждое имя из <cwctype> помещено в глобальное пространство имен

Специальные заголовки совместимости с C

Заголовок <stdatomic.h> объявляет имена, которые также предоставляются в стандартной библиотеке C, и определяет макрос _Atomic, который является ключевым словом в C. В отличие от других xxx.h заголовков, соответствующий <cstdatomic> не предоставляется.

<stdatomic.h>
(C++23)
Определяет _Atomic и предоставляет соответствующие компоненты в стандартной библиотеке C

Пустые заголовки C

Заголовки <complex.h>, <ccomplex>, <tgmath.h> и <ctgmath> не содержат содержимого из стандартной библиотеки C, а вместо этого включают другие заголовки из стандартной библиотеки C++.

<ccomplex>
(C++11)(устаревшее в C++17)(удалено в C++20)
Просто включает заголовок <complex>
<complex.h>
(C++11)
Просто включает заголовок <complex>
<ctgmath>
(C++11)(устаревшее в C++17)(удалено в C++20)
Просто включает заголовки <complex> и <cmath>: перегрузки, эквивалентные содержимому заголовка C tgmath.h, уже предоставлены этими заголовками
<tgmath.h>
(C++11)
Просто включает заголовки <complex> и <cmath>

Бесполезные заголовки C

Заголовки <ciso646>, <cstdalign> и <cstdbool> не имеют смысла в C++, потому что макросы, которые они предоставляют в C, являются ключевыми словами языка C++.

<ciso646>
(удалено в C++20)
Пустой заголовок. Макросы, которые появляются в iso646.h в C являются ключевыми словами в C++
<cstdalign>
(C++11)(устаревшее в C++17)(удалено в C++20)
Определяет одну константу-макрос совместимости
<cstdbool>
(C++11)(устаревшее в C++17)(удалено в C++20)
Определяет одну константу-макрос совместимости
<iso646.h>
Не оказывает никакого эффекта
<stdalign.h>
(C++11)
Определяет одну константу-макрос совместимости
<stdbool.h>
(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/headers

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API