Библиотека утилит
C++ включает в себя множество полезных библиотек, которые обеспечивают различную функциональность, работая на разных уровнях абстракции, включая, например управление битами и частичное применение функции. Эти библиотеки можно разделить на две группы:
- библиотеки для поддержки языка;
- библиотеки общего назначения.
[править] Поддержка языка
Библиотеки поддержки языка предоставляют классы и функции, тесно связанные с возможностями языка и служащие для поддержки общих языковых идиом.
[править] Подержка типов
Базовые типы (например, std::size_t, std::nullptr_t), RTTI (например, std::type_info), свойства типа (например, std::is_integral, std::rank)
[править] Контекст оценки константы
| Определены в заголовочном файле
<type_traits> | |
| (C++20) |
определяет, происходит ли вызов в контексте вычисления константы (функция) |
[править] Свойства реализации
|
Заголовок <version> предоставляет зависящую от реализации информацию о стандартной библиотеке C++ (такую как номер версии и дата выпуска). Он также объявляет макросы тестирования возможностей библиотеки. |
(начиная с C++20) |
[править] Программные утилиты
- Прерывание (например, std::abort, std::atexit)
- Окружение (например, std::system)
- Сигналы (например, std::raise)
[править] Динамическое управление памятью
- Умные указатели (например, std::shared_ptr).
- Распределители (например, std::allocator или std::pmr::memory_resource).
- Управление памятью в стиле C (например, std::malloc).
[править] Доступ к объекту
| Определены в заголовочном файле
<new> | |
| (C++17) |
барьер оптимизации указателя (шаблон функции) |
[править] Обработка ошибок
- Исключения (например, std::exception, std::terminate).
- Утверждения (например, assert).
- Утверждения момента компиляции (static_assert).
[править] Сбор информации об исходном коде
| Определены в заголовочном файле
<source_location> | |
| (C++20) |
класс, предоставляющий информацию об исходном коде, такую как имена файлов, номера строк и имена функций (класс) |
[править] Списки инициализации
| Определены в заголовочном файле
<initializer_list> | |
| (C++11) |
создаёт временный массив в списке инициализации, а затем ссылается на него (шаблон класса) |
[править] Трёхстороннее сравнение
| Определены в заголовочном файле
<compare> | |
| указывает, что оператор <=> даёт согласованный результат для данных типов (концепт) | |
| (C++20) |
тип результата трёхстороннего сравнения, который поддерживает все 6 операторов, не подлежит замене и допускает несравнимые значения (класс) |
| (C++20) |
тип результата трёхстороннего сравнения, который поддерживает все 6 операторов и не подлежит замене (класс) |
| (C++20) |
тип результата трёхстороннего сравнения, который поддерживает все 6 операторов и может быть заменён (класс) |
| именованные функции сравнения (функция) | |
| (C++20) |
реализация объекта функции x <=> y (класс) |
| (C++20) |
получает тип результата оператора трёхстороннего сравнения <=> для заданных типов (шаблон класса) |
| (C++20) |
самая сильная категория сравнения, в которую можно преобразовать все указанные типы (шаблон класса) |
| (C++20) |
выполняет трёхстороннее сравнение и возвращает результат типа std::strong_ordering (объект точки настройки) |
| (C++20) |
выполняет трёхстороннее сравнение и возвращает результат типа std::weak_ordering (объект точки настройки) |
| (C++20) |
выполняет трёхстороннее сравнение и возвращает результат типа std::partial_ordering (объект точки настройки) |
выполняет трёхстороннее сравнение и возвращает результат типа std::strong_ordering, даже если operator<=> недоступен (объект точки настройки) | |
| (C++20) |
выполняет трёхстороннее сравнение и возвращает результат типа std::weak_ordering, даже если operator<=> недоступен (объект точки настройки) |
выполняет трёхстороннее сравнение и возвращает результат типа std::partial_ordering, даже если operator<=> недоступен (объект точки настройки) | |
[править] Поддержка сопрограмм
|
Типы для поддержки сопрограмм, например std::coroutine_traits, std::coroutine_handle. |
(начиная с C++20) |
[править] Вариативные функции
Поддержка функций, которые принимают произвольное число параметров (например, через va_start, va_arg, va_end).
[править] Утилиты общего назначения
[править] Обмен и операции над типами
| Определены в заголовочном файле
<utility> | |
| меняет местами значения двух объектов (шаблон функции) | |
| (C++14) |
заменяет аргумент новым значением и возвращает его предыдущее значение (шаблон функции) |
| (C++11) |
пересылает аргумент функции (шаблон функции) |
| (C++11) |
получает ссылку на rvalue (шаблон функции) |
| (C++11) |
получает ссылку rvalue, если конструктор перемещения не бросает исключение (шаблон функции) |
| (C++17) |
получает ссылку на константу её аргумента (шаблон функции) |
| (C++11) |
получает ссылку на свой аргумент для использования в невычисленном контексте (шаблон функции) |
| (C++23) |
преобразует перечисление в его базовый тип (шаблон функции) |
| Определены в заголовочном файле
<concepts> | |
| (C++20) |
обменивает значения двух объектов (объект точки настройки) |
[править] Целочисленные функции сравнения
| Определены в заголовочном файле
<utility> | |
| сравнивает два целых значения без изменения значения, вызванного преобразованием (шаблон функции) | |
| (C++20) |
проверяет, находится ли целочисленное значение в диапазоне заданного целочисленного типа (шаблон функции) |
[править] Операторы отношения
| Определены в заголовочном файле
<utility> | |
| Определены в пространстве имён
std::rel_ops | |
| (устарело в C++20) |
автоматически генерирует операторы сравнения на основе определённых пользователем operator== и operator< (шаблон функции) |
[править] Пары и кортежи
| Определены в заголовочном файле
<utility> | |
| реализует двойной кортеж, т.е. пару значений (шаблон класса) | |
| (C++11) |
объект типа piecewise_construct_t, используемый для устранения неоднозначности функций для кусочного построения (константа) |
| (C++14) |
реализует последовательность целых чисел на этапе компиляции (шаблон класса) |
| Определены в заголовочном файле
<tuple> | |
| (C++11) |
реализует контейнер фиксированного размера, который содержит элементы, возможно, разных типов (шаблон класса) |
| (C++17) |
вызывает функцию с кортежем аргументов (шаблон функции) |
| (C++17) |
создаёт объект с кортежем аргументов (шаблон функции) |
| Определены в заголовочном файле
<tuple> | |
| Определены в заголовочном файле
<utility> | |
| Определены в заголовочном файле
<array> | |
| Определены в заголовочном файле
<ranges> | |
| (C++11) |
получает количество элементов кортежного типа (шаблон класса) |
| (C++11) |
получает типы элементов кортежного типа (шаблон класса) |
[править] Типы сумм и удаляемые оболочки типов
| Определены в заголовочном файле
<optional> | |
| (C++17) |
обёртка, которая может содержать или не содержать объект (шаблон класса) |
| Определены в заголовочном файле
<expected> | |
| (C++23) |
оболочка, содержащая либо ожидаемое значение, либо значение ошибки (шаблон класса) |
| Определены в заголовочном файле
<variant> | |
| (C++17) |
типобезопасное размеченное объединение (шаблон класса) |
| Определены в заголовочном файле
<any> | |
| (C++17) |
объекты, содержащие экземпляры любого CopyConstructible типа. (класс) |
| Определены в заголовочном файле
<utility> | |
| метка конструирования на месте (шаблон класса) | |
[править] Набор битов
| Определены в заголовочном файле
<bitset> | |
| реализует битовый массив постоянной длины (класс) | |
[править] Объекты функции
- Частичное применение функции (например, std::bind) и сопутствующие утилиты: утилиты для привязки, такие как std::ref и std::placeholders
- Полиморфные оболочки функций: std::function
- Предопределённые функторы (например, std::plus, std::equal_to)
- Метод преобразователей функций std::mem_fn.
[править] Поддержка хеширования
| Определены в заголовочном файле
<functional> | |
| (C++11) |
Объект хеш-функции (шаблон класса) |
[править] Дата и время
- Отслеживание времени (например, std::chrono::time_point, std::chrono::duration)
- Дата и время в стиле C (например, std::time, std::clock)
[править] Элементарные преобразования строк
В дополнение к сложным анализаторам и средствам форматирования, зависящим от локали, предоставляемым библиотекой C++ Ввода/Вывода, библиотекой C Ввода/Вывода, Конвертерами строк C++ и Конвертерами строк C, заголовок <charconv> предоставляет лёгкие, не зависящие от локали, не выделяющие память, не выбрасывающие исключения парсеры и средства форматирования для арифметических типов.
| Определены в заголовочном файле
<charconv> | |
| (C++17) |
преобразует целое число или значение с плавающей точкой в последовательность символов (функция) |
| (C++17) |
преобразует последовательность символов в целое число или значение с плавающей точкой (функция) |
| (C++17) |
определяет форматирование для std::to_chars и std::from_chars (перечисление) |
[править] Библиотека форматирования
Средства для безопасного форматирования строк.
| Определены в заголовочном файле
<format> | |
| (C++20) |
сохраняет форматированное представление аргументов в новой строке (шаблон функции) |
| (C++20) |
записывает форматированное представление своих аргументов через итератор вывода (шаблон функции) |
| (C++20) |
записывает форматированное представление своих аргументов через итератор вывода, не превышая заданного размера (шаблон функции) |
| (C++20) |
определяет количество символов, необходимых для хранения форматированного представления его аргументов (шаблон функции) |
| (C++20) |
не шаблонный variant std::format с использованием представления аргументов с удалением типа (функция) |
| (C++20) |
не шаблонный variant std::format_to с использованием представления аргументов с удалением типа (шаблон функции) |
| (C++20) |
шаблон класса, который определяет правила форматирования для данного типа (шаблон класса) |
| (C++20) |
тип исключения, возникающий при ошибках форматирования (класс) |
[править] Смотрите также
| Документация по C для Библиотека утилит
|

