Spec-Zone.ru › C++

Язык программирования C++

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

Заголовочные файлы общего назначения

<cstdlib>
Утилиты общего назначения: управление программой, динамическое выделение памяти, случайные числа, сортировка и поиск
<execution>
(C++17)
Предопределённые политики выполнения для параллельных версий алгоритмов и компоненты управления выполнением(с C++26)

Библиотека поддержки языка

<cfloat>
Пределы типов с плавающей точкой
<climits>
Пределы целочисленных типов
<compare>
(C++20)
Поддержка оператора трёхстороннего сравнения
<contracts>
(C++26)
Библиотека поддержки контрактов
<coroutine>
(C++20)
Библиотека поддержки корутин
<csetjmp>
Макрос (и функция) для сохранения контекста выполнения и перехода к нему
<csignal>
Функции и константы-макросы для управления сигналами
<cstdarg>
Обработка списков аргументов переменной длины
<cstddef>
Стандартные макросы и определения типов
<cstdint>
(C++11)
Целочисленные типы фиксированной ширины и пределы других типов
<exception>
Утилиты для обработки исключений
<initializer_list>
(C++11)
Шаблон класса std::initializer_list
<limits>
Запрос свойств арифметических типов
<new>
Утилиты низкоуровневого управления памятью
<source_location>
(C++20)
Предоставляет средства для получения местоположения в исходном коде
<stdfloat>
(C++23)
Типы с плавающей точкой фиксированной ширины
<typeindex>
(C++11)
std::type_index
<typeinfo>
Утилиты для получения информации о типах во время выполнения
<version>
(C++20)
Предоставляет макросы для проверки состояния реализации библиотеки

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

<concepts>
(C++20)
Фундаментальные концепты библиотеки

Библиотека диагностики

<cassert>
Условно компилируемый макрос, сравнивающий свой аргумент с нулём
<cerrno>
Макрос, содержащий номер последней ошибки
<debugging>
(C++26)
Библиотека отладки
<stacktrace>
(C++23)
Библиотека трассировки стека
<stdexcept>
Стандартные типы исключений
<system_error>
(C++11)
Определяет std::error_code — зависящий от платформы код ошибки

Библиотека управления памятью

<memory>
Утилиты высокоуровневого управления памятью
<memory_resource>
(C++17)
Полиморфные распределители и ресурсы памяти
<scoped_allocator>
(C++11)
Вложенный класс распределителя

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

<meta>
(C++26)
Библиотека поддержки рефлексии во время компиляции
<ratio>
(C++11)
Рациональная арифметика во время компиляции
<type_traits>
(C++11)
Утилиты для получения информации о типах во время компиляции

Библиотека утилит общего назначения

<any>
(C++17)
Класс std::any
<bit>
(C++20)
Функции манипулирования битами
<bitset>
Шаблон класса std::bitset
<expected>
(C++23)
Шаблон класса std::expected
<functional>
Функциональные объекты, вызовы функций, операции связывания и обёртки ссылок
<optional>
(C++17)
Шаблон класса std::optional
<tuple>
(C++11)
Шаблон класса std::tuple
<utility>
Различные вспомогательные компоненты
<variant>
(C++17)
Шаблон класса std::variant

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

<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
<hive>
(C++26)
Контейнер std::hive
<inplace_vector>
(C++26)
Контейнер std::inplace_vector
<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>
Алгоритмы для работы с диапазонами
<numeric>
Числовые операции над значениями в диапазонах

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

<cstring>
Различные функции для работы со строками из узких символов
<string>
Шаблон класса std::basic_string
<string_view>
(C++17)
Шаблон класса std::basic_string_view

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

<cctype>
Функции для определения категории узких символов
<charconv>
(C++17)
std::to_chars и std::from_chars
<clocale>
Средства локализации в стиле C
<codecvt>
(C++11)(устарело в C++17)(удалено в C++26)
Средства преобразования Unicode
<cuchar>
(C++11)
Функции преобразования символов Unicode в стиле C
<cwchar>
Различные функции для работы со строками из широких и многобайтовых символов
<cwctype>
Функции для определения категории широких символов
<format>
(C++20)
Библиотека форматирования, включая std::format
<locale>
Утилиты локализации
<regex>
(C++11)
Классы, алгоритмы и итераторы для поддержки обработки регулярных выражений
<text_encoding>
(C++26)
Идентификация кодировок текста

Библиотека числовых операций

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

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

<chrono>
(C++11)
Средства работы со временем в C++
<ctime>
Средства работы с датой и временем в стиле C

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

<cinttypes>
(C++11)
Макросы форматирования, intmax_t и uintmax_t математических операций и преобразований
<cstdio>
Функции ввода-вывода в стиле C
<filesystem>
(C++17)
Класс std::filesystem::path и вспомогательные функции
<fstream>
Шаблоны классов std::basic_fstream, std::basic_ifstream, std::basic_ofstream и определения типов
<iomanip>
Вспомогательные функции для управления форматом ввода и вывода
<ios>
Класс std::ios_base, шаблон класса std::basic_ios и определения типов
<iosfwd>
Предварительные объявления всех классов библиотеки ввода-вывода
<iostream>
Несколько стандартных потоковых объектов
<istream>
Шаблон класса std::basic_istream и псевдонимы типов
<ostream>
Шаблоны классов std::basic_ostream, std::basic_iostream и псевдонимы типов
<print>
(C++23)
Библиотека форматированного вывода, включая std::print
<spanstream>
(C++23)
Шаблоны классов std::basic_spanstream, std::basic_ispanstream, std::basic_ospanstream и псевдонимы типов
<sstream>
Шаблоны классов std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream и псевдонимы типов
<streambuf>
Шаблон класса std::basic_streambuf
<strstream>
(устарел в C++98)(удалён в C++26)
std::strstream, std::istrstream, std::ostrstream
<syncstream>
(C++20)
std::basic_osyncstream, std::basic_syncbuf и псевдонимы типов

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

<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)
Механизмы чтения-копирования-обновления
<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>, <stdbit.h> и <stdckdint.h> объявляют имена, которые также предоставляются стандартной библиотекой C. Заголовок <stdatomic.h> также определяет макрос _Atomic, который является ключевым словом в C. В отличие от других заголовков <xxx.h>, соответствующие заголовки <cstdatomic>, <cstdbit> и <cstdckdint> не предоставляются.

<stdatomic.h>
(C++23)
Определяет _Atomic и предоставляет соответствующие компоненты стандартной библиотеки C
<stdbit.h>
(C++26)
Предоставляет соответствующие компоненты стандартной библиотеки C
<stdckdint.h>
(C++26)
Предоставляет соответствующие компоненты стандартной библиотеки 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++ также определяют несколько наборов заголовков.

См. также

Документация по C для заголовков стандартной библиотеки C

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/header

Spec-Zone.ru

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