std::forward_list
— это контейнер, который поддерживает быструю вставку и удаление элементов из любого места контейнера. Быстрый произвольный доступ не поддерживается. Он реализован как односвязный список. По сравнению с
std::list
этот контейнер обеспечивает более эффективное использование памяти, когда двунаправленная итерация не требуется.
Добавление, удаление и перемещение элементов внутри списка или между несколькими списками не инвалидирует итераторы, в настоящее время ссылающиеся на другие элементы списка. Однако итератор или ссылка, ссылающаяся на элемент, инвалидируется при удалении соответствующего элемента (через
erase_after
) из списка.
Все функции-члены
std::forward_list
являются
constexpr
: возможно создавать и использовать объекты
std::forward_list
при вычислении константного выражения.
Однако, объекты
std::forward_list
обычно не могут быть
constexpr
, поскольку любая динамически выделенная память должна быть освобождена в том же вычислении константного выражения.
Требования, накладываемые на элементы, зависят от фактических операций, выполняемых с контейнером. Обычно требуется, чтобы тип элемента был полным типом и удовлетворял требованиям
Erasable
, но многие функции-члены накладывают более строгие требования.
(until C++17)
Требования, накладываемые на элементы, зависят от фактических операций, выполняемых с контейнером. Обычно требуется, чтобы тип элемента удовлетворял требованиям
Erasable
, но многие функции-члены накладывают более строгие требования. Этот контейнер (но не его члены) может быть инстанцирован с неполным типом элемента, если аллокатор удовлетворяет
требованиям полноты аллокатора
.
Аллокатор, который используется для выделения/освобождения памяти и для создания/уничтожения элементов в этой памяти. Тип должен удовлетворять требованиям
Allocator
.
Поведение не определено
(until C++20)
Программа некорректна
(since C++20)
если
Allocator::value_type
не совпадает с
T
.
Типы-члены
Тип-член
Определение
value_type
T
allocator_type
Allocator
size_type
беззнаковый целочисленный тип (обычно std::size_t)
difference_type
знаковый целочисленный тип (обычно std::ptrdiff_t)