Библиотека утилит
C++ включает в себя множество полезных библиотек, которые обеспечивают различную функциональность, работая на разных уровнях абстракции, включая, например управление битами и частичное применение функции. Эти библиотеки можно разделить на две группы:
- библиотеки для поддержки языка;
- библиотеки общего назначения.
[править] Поддержка языка
Библиотеки поддержки языка предоставляют классы и функции, тесно связанные с возможностям�� языка и служащие для поддержки общих языковых идиом.
[править] Подержка типов
Базовые типы (например, std::size_t, std::nullptr_t), RTTI (например, std::type_info), свойства типа (например, std::is_integral, std::rank)
[править] Контекст оценки константы
Определены в заголовочном файле
<type_traits> | |
(C++20) |
определяет, происходит ли вызов в контексте вычисления константы (функция) |
(C++26) |
проверяет, находится ли указатель в пределах времени жизни объекта во время компиляции (функция) |
[править] Свойства реализации
Заголовок <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) |
заменяет аргумент новым значением и возвращает его предыдущее значение (шаблон функции) |
Определены в заголовочном файле
<concepts> | |
(C++20) |
обменивает значения двух объектов (объект точки настройки) |
[править] Операции с типами
Определены в заголовочном файле
<utility> | |
(C++11) |
пересылает аргумент функции (шаблон функции) |
(C++23) |
перенаправляет аргумент функции, как если бы это приводило его к категории значений и константности выражения указанного аргумента шаблона типа (шаблон функции) |
(C++11) |
получает ссылку на rvalue (шаблон функции) |
(C++11) |
получает ссылку rvalue, если конструктор перемещения не генерирует исключение (шаблон функции) |
(C++17) |
получает ссылку на константу её аргумента (шаблон функции) |
(C++11) |
получает ссылку на свой аргумент для использования в невычисленном контексте (шаблон функции) |
(C++23) |
преобразует перечисление в его базовый тип (шаблон функции) |
[править] Целочисленные функции сравнения
Определены в заголовочном файле
<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) |
получает количество элементов tuple подобного типа (шаблон класса) |
(C++11) |
получает типы элементов tuple подобного типа (шаблон класса) |
[править] Типы сумм и удаляемые оболочки типов
Определены в заголовочном файле
<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) |
тип возвращаемого значения std::to_chars (класс) |
(C++17) |
преобразует последовательность символов в целое число или значение с плавающей запятой (функция) |
(C++17) |
тип возвращаемого значения std::from_chars (класс) |
(C++17) |
определяет форматирование для std::to_chars и std::from_chars (перечисление) |
[править] Библиотека форматирования
Средства для безопасного форматирования строк.
Определены в заголовочном файле
<format> | |
(C++20) |
сохраняет форматированное представление аргументов в новой строке (шаблон функции) |
(C++20) |
записывает форматированное представление своих аргументов через итератор вывода (шаблон функции) |
(C++20) |
записывает форматированное представление своих аргументов через итератор вывода, не превышая заданного размера (шаблон функции) |
(C++20) |
определяет количество символов, необходимых для хранения форматированного представления его аргументов (шаблон функции) |
(C++20) |
нешаблонный вариант std::format с использованием представления аргументов с удалением типа (функция) |
(C++20) |
нешаблонный вариант std::format_to с использованием представления аргументов с удалением типа (шаблон функции) |
(C++20) |
шаблонный класс, который определяет правила форматирования для данного типа (шаблон класса) |
(C++20) |
тип исключения, возникающий при ошибках форматирования (класс) |
[править] Смотрите также
Документация C по Библиотека утилит
|