Spec-Zone.ru › C++

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

В C++ имеется ряд библиотек утилит, обеспечивающих функциональность от подсчета битов до частичного применения функций. Данные библиотеки можно условно разделить на две группы:

  • библиотеки поддержки языка, и
  • библиотеки общего назначения.

Поддержка языка

Библиотеки поддержки языка предоставляют классы и функции, тесно взаимодействующие с языковыми возможностями и поддерживающие распространенные языковые идиомы.

Поддержка типов

Базовые типы (напр. std::size_t, std::nullptr_t), RTTI (напр. std::type_info), типы-признаки (напр. std::is_integral, std::rank)

Контекст постоянной оценки

Определено в заголовке <type_traits>
is_constant_evaluated
(C++20)
определяет, происходит ли вызов в контексте постоянной оценки
(функция)
is_within_lifetime
(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)

Обработка ошибок

Исключения (напр. std::exception, std::terminate), утверждения (напр. assert)

Захват информации из исходного кода

Определено в заголовке <source_location>
source_location
(C++20)
класс, представляющий информацию об исходном коде, такую как имена файлов, номера строк и имена функций
(класс)

Поддержка отладки

Определено в заголовке <debugging>
breakpoint
(C++26)
приостанавливает выполнение программы при вызове
(функция)
breakpoint_if_debugging
(C++26)
вызывает std::breakpoint если std::is_debugger_present возвращает true
(функция)
is_debugger_present
(C++26)
проверяет, запускается ли программа под управлением отладчика
(функция)

Инициализаторы списков

Определено в заголовке <initializer_list>
initializer_list
(C++11)
создает временный массив в инициализации списком и затем ссылается на него
(шаблон класса)

Трехстороннее сравнение

Определено в заголовочном файле <compare>
three_way_comparablethree_way_comparable_with
(C++20)
указывает, что оператор <=> производит согласованный результат для заданных типов
(концепция)
partial_ordering
(C++20)
тип результата 3-х мерного сравнения, поддерживающий все 6 операторов, не заменяемый и допускающий несравнимые значения
(класс)
weak_ordering
(C++20)
тип результата 3-х мерного сравнения, поддерживающий все 6 операторов и не заменяемый
(класс)
strong_ordering
(C++20)
тип результата 3-х мерного сравнения, поддерживающий все 6 операторов и заменяемый
(класс)
is_eqis_neqis_ltis_lteqis_gtis_gteq
(C++20)
именованные функции сравнения
(функция)
compare_three_way
(C++20)
объект-функция, реализующая x <=> y
(класс)
compare_three_way_result
(C++20)
получает тип результата оператора трёхмерного сравнения <=> для заданных типов
(шаблон класса)
common_comparison_category
(C++20)
самая сильная категория сравнения, в которую все заданные типы могут быть преобразованы
(шаблон класса)
strong_order
(C++20)
выполняет трёхмерное сравнение и возвращает результат типа std::strong_ordering.
(объект точки кастомизации)
weak_order
(C++20)
выполняет трёхмерное сравнение и возвращает результат типа std::weak_ordering.
(объект точки кастомизации)
partial_order
(C++20)
выполняет трёхмерное сравнение и возвращает результат типа std::partial_ordering.
(объект точки кастомизации)
compare_strong_order_fallback
(C++20)
выполняет трёхмерное сравнение и возвращает результат типа std::strong_ordering, даже если operator<=> недоступен
(объект точки кастомизации)
compare_weak_order_fallback
(C++20)
выполняет трёхмерное сравнение и возвращает результат типа std::weak_ordering, даже если operator<=> недоступен
(объект точки кастомизации)
compare_partial_order_fallback
(C++20)
выполняет трёхмерное сравнение и возвращает результат типа std::partial_ordering, даже если operator<=> недоступен
(объект точки кастомизации)

Поддержка сопрограмм

Типы для поддержки сопрограмм, например, std::coroutine_traits, std::coroutine_handle.

(с C++20)

Функции с переменным числом аргументов

Поддержка функций, принимающих произвольное количество параметров (через, например, va_start, va_arg, va_end).

Общие служебные утилиты

Обмен

Определено в заголовочном файле <utility>
swap
меняет значения двух объектов
(шаблон функции)
exchange
(C++14)
заменяет аргумент новым значением и возвращает его предыдущее значение
(шаблон функции)
Определено в заголовочном файле <concepts>
ranges::swap
(C++20)
меняет значения двух объектов
(объект точки кастомизации)

Операции с типами

Определено в заголовочном файле <utility>
forward
(C++11)
пересылает аргумент функции
(шаблон функции)
forward_like
(C++23)
пересылает аргумент функции так, как будто он приводится к категории значений и константности выражения указанного типа шаблона аргумента
(шаблон функции)
move
(C++11)
получает ссылку на rvalue
(шаблон функции)
move_if_noexcept
(C++11)
получает ссылку на rvalue, если конструктор перемещения не генерирует исключения
(шаблон функции)
as_const
(C++17)
получает ссылку на const для своего аргумента
(шаблон функции)
declval
(C++11)
получает ссылку на свой аргумент для использования в невычисляемом контексте
(шаблон функции)
to_underlying
(C++23)
преобразует перечисление в его базовый тип
(шаблон функции)

Функции сравнения целых чисел

Определено в заголовке <utility>
cmp_equalcmp_not_equalcmp_lesscmp_greatercmp_less_equalcmp_greater_equal
(C++20)
сравнивает два целочисленных значения без изменения значения, вызванного преобразованием
(шаблон функции)
in_range
(C++20)
проверяет, находится ли целочисленное значение в диапазоне заданного целочисленного типа
(шаблон функции)

Операторы сравнения

Определено в заголовке <utility>
Определено в пространстве имён std::rel_ops
operator!=operator>operator<=operator>=
(устарело в C++20)
автоматически генерирует операторы сравнения на основе определённого пользователем operator== и operator<
(шаблон функции)

Пары и кортежи

Пары и кортежи
Определено в заголовке <utility>
pair
реализует бинарный кортеж, т.е. пару значений
(шаблон класса)
piecewise_constructpiecewise_construct_t
(C++11)
тег для поэтапного конструирования
(тег)
integer_sequence
(C++14)
реализует последовательность целых чисел во время компиляции
(шаблон класса)
Определено в заголовке <tuple>
tuple
(C++11)
реализует контейнер с фиксированным размером, который хранит элементы, возможно, разных типов
(шаблон класса)
apply
(C++17)
вызывает функцию с кортежем аргументов
(шаблон функции)
make_from_tuple
(C++17)
создаёт объект с кортежем аргументов
(шаблон функции)
Протокол кортежей
Определено в заголовке <tuple>
Определено в заголовке <utility>
Определено в заголовке <array>
Определено в заголовке <ranges>
tuple_size
(C++11)
получает количество элементов типа, похожего на кортеж
(шаблон класса)
tuple_element
(C++11)
получает типы элементов типа, похожего на кортеж
(шаблон класса)

Типы сумм и обёртки с типом, удалённым из исходного кода

Определено в заголовке <optional>
optional
(C++17)
оболочка, которая может или не может содержать объект
(шаблон класса)
Определено в заголовке <expected>
expected
(C++23)
оболочка, которая содержит ожидаемое или ошибочное значение
(шаблон класса)
Определено в заголовке <variant>
variant
(C++17)
безопасный по типу дизъюнкционный союз
(шаблон класса)
Определено в заголовке <any>
any
(C++17)
объекты, которые содержат экземпляры любого типа CopyConstructible
(класс)
Определено в заголовке <utility>
in_placein_place_typein_place_indexin_place_tin_place_type_tin_place_index_t
(C++17)
тег для конструирования на месте
(тег)

Битовый массив

Определено в заголовке <bitset>
bitset
реализует битовый массив постоянной длины
(шаблон класса)

Функциональные объекты

Частичное применение функций (например, std::bind) и связанные с ним утилиты: утилиты для привязки, такие как std::ref и std::placeholders, полиморфные обёртки для функций: std::function, предопределённые функционалы (например, std::plus, std::equal_to), преобразователи указателя на член в функцию std::mem_fn.

Поддержка хеширования

Определено в заголовке <functional>
hash
(C++11)
объект функции хеширования
(шаблон класса)

Дата и время

Отслеживание времени (например, std::chrono::time_point, std::chrono::duration), дата и время в стиле C (например, std::time, std::clock)

Элементарные преобразования строк

В дополнение к сложным зависимым от локали парсерам и форматировщикам, предоставляемым библиотекой C++ I/O, библиотекой C I/O, преобразователями строк C++ и преобразователями строк C, заголовок <charconv> предоставляет лёгкие, независимые от локали, не выделяющие память, не бросающие исключений парсеры и форматировщики для арифметических типов.

Определено в заголовке <charconv>
to_chars
(C++17)
преобразует целое или дробное значение в последовательность символов
(функция)
to_chars_result
(C++17)
тип возвращаемого значения функции std::to_chars
(класс)
from_chars
(C++17)
преобразует последовательность символов в целое или дробное значение
(функция)
from_chars_result
(C++17)
тип возвращаемого значения функции std::from_chars
(класс)
chars_format
(C++17)
определяет форматирование для std::to_chars и std::from_chars
(перечисление)

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

Средства для безопасного форматирования строк с учетом типов.

Определено в заголовке <format>
format
(C++20)
хранит отформатированное представление аргументов в новой строке
(шаблон функции)
format_to
(C++20)
записывает отформатированное представление аргументов через итератор вывода
(шаблон функции)
format_to_n
(C++20)
записывает отформатированное представление аргументов через итератор вывода, не превышая заданного размера
(шаблон функции)
formatted_size
(C++20)
определяет количество символов, необходимых для хранения отформатированного представления аргументов
(шаблон функции)
vformat
(C++20)
нешаблонная версия std::format с использованием представления аргументов без типов
(функция)
vformat_to
(C++20)
нешаблонная версия std::format_to с использованием представления аргументов без типов
(шаблон функции)
formatter
(C++20)
определяет правила форматирования для данного типа
(шаблон класса)
format_error
(C++20)
тип исключения, выбрасываемый при ошибках форматирования
(класс)

См. также

Документация по C для библиотеки функций

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

Spec-Zone.ru

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