Пространства имён
Варианты
Действия

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

Материал из cppreference.com
< cpp
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм(C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования(C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 

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

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

Содержание

[править]Поддержка языка

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

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

Базовые типы (например, std::size_t, std::nullptr_t), RTTI (например, std::type_info), свойства типа (например, std::is_integral, std::rank)

[править]Контекст оценки константы

Определены в заголовочном файле <type_traits>
определяет, происходит ли вызов в контексте вычисления константы
(функция)[править]
проверяет, находится ли указатель в пределах времени жизни объекта во время компиляции
(функция)[править]

[править]Свойства реализации

Заголовок <version> предоставляет зависящую от реализации информацию о стандартной библиотеке C++ (такую как номер версии и дата выпуска). Он также объявляет макросы тестирования возможностей библиотеки.

(начиная с C++20)

[править] Программные утилиты

[править]Динамическое управление памятью

  • Умные указатели (например, std::shared_ptr).
  • Распределители (например, std::allocator или std::pmr::memory_resource).
  • Управление памятью в стиле C (например, std::malloc).

[править]Доступ к объекту

Определены в заголовочном файле <new>
(C++17)
барьер оптимизации указателя
(шаблон функции)[править]

[править]Обработка ошибок

  • Исключения (например, std::exception, std::terminate).
  • Утверждения (например, assert).
  • Утверждения времени компиляции (static_assert).

[править]Сбор информации об исходном коде

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

[править]Списки инициализации

Определены в заголовочном файле <initializer_list>
создаёт временный массив в списке инициализации, а затем ссылается на него
(шаблон класса)[править]

[править]Трёхстороннее сравнение

Определены в заголовочном файле <compare>
указывает, что оператор <=> даёт согласованный результат для данных типов
(концепт)[править]
тип результата трёхстороннего сравнения, который поддерживает все 6 операторов, невзаимозаменяемый и допускает несравнимые значения
(класс)[править]
тип результата трёхстороннего сравнения, который поддерживает все 6 операторов и невзаимозаменяемый
(класс)[править]
тип результата трёхстороннего сравнения, который поддерживает все 6 операторов и может быть взаимозаменяемым
(класс)[править]
именованные функции сравнения
(функция)[править]
функциональный объект, реализующий x <=> y
(класс)[править]
получает тип результата оператора трёхстороннего сравнения <=> для заданных типов
(шаблон класса)[править]
самая строгая категория сравнения, в которую можно преобразовать все указанные типы
(шаблон класса)[править]
выполняет трёхстороннее сравнение и возвращает результат типа std::strong_ordering
(объект точки настройки)[править]
(C++20)
выполняет трёхстороннее сравнение и возвращает результат типа std::weak_ordering
(объект точки настройки)[править]
выполняет трёхстороннее сравнение и возвращает результат типа std::partial_ordering
(объект точки настройки)[править]
выполняет трёхстороннее сравнение и возвращает результат типа std::strong_ordering, даже если operator<=> недоступен
(объект точки настройки)[править]
выполняет трёхстороннее сравнение и возвращает результат типа 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>
обменивает значения двух объектов
(объект точки настройки)[править]

[править]Операции с типами

Определены в заголовочном файле <utility>
(C++11)
пересылает аргумент функции
(шаблон функции)[править]
перенаправляет аргумент функции, как если бы это приводило его к категории значений и константности выражения указанного аргумента шаблона типа
(шаблон функции)[править]
(C++11)
получает ссылку на rvalue
(шаблон функции)[править]
получает ссылку rvalue, если конструктор перемещения не генерирует исключение
(шаблон функции)[править]
(C++17)
получает ссылку на константу её аргумента
(шаблон функции)[править]
(C++11)
получает ссылку на свой аргумент для использования в невычисленном контексте
(шаблон функции)[править]
преобразует перечисление в его базовый тип
(шаблон функции)[править]

[править]Целочисленные функции сравнения

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

[править]Операторы отношения

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

[править]Пары и кортежи

Определены в заголовочном файле <utility>
реализует двойной кортеж, т.е. пару значений
(шаблон класса)[править]
объект типа piecewise_construct_t, используемый для устранения неоднозначности функций для кусочного построения
(константа)[править]
реализует последовательность целых чисел на этапе компиляции
(шаблон класса)[править]
Определены в заголовочном файле <tuple>
(C++11)
реализует контейнер фиксированного размера, который содержит элементы, возможно, разных типов
(шаблон класса)[править]
(C++17)
вызывает функцию с кортежем аргументов
(шаблон функции)[править]
создаёт объект с кортежем аргументов
(шаблон функции)[править]
Протокол кортежа
Определены в заголовочном файле <tuple>
Определены в заголовочном файле <utility>
Определены в заголовочном файле <array>
Определены в заголовочном файле <ranges>
(C++11)
получает количество элементов tuple подобного типа
(шаблон класса)[править]
получает типы элементов 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)
Объект хеш-функции
(шаблон класса)[править]

[править]Дата и время

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

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

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

[править]Библиотека форматирования

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

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

[править]Смотрите также

Документация C по Библиотека утилит
close