std:: forward_list
|
Определено в заголовочном файле
<forward_list>
|
||
|
template
<
class
T,
|
(1) | (начиная с C++11) |
|
namespace
pmr
{
template
<
class
T
>
|
(2) | (начиная с C++17) |
std::forward_list
— это контейнер, который поддерживает быструю вставку и удаление элементов из любого места контейнера. Быстрый произвольный доступ не поддерживается. Он реализован как односвязный список. По сравнению с
std::list
этот контейнер обеспечивает более эффективное использование памяти, когда двунаправленная итерация не требуется.
Добавление, удаление и перемещение элементов внутри списка или между несколькими списками не инвалидирует итераторы, в настоящее время ссылающиеся на другие элементы списка. Однако итератор или ссылка, ссылающаяся на элемент, инвалидируется при удалении соответствующего элемента (через erase_after ) из списка.
std::forward_list
удовлетворяет требованиям
Container
(за исключением функции-члена
size
и того, что сложность
operator==
всегда линейна),
AllocatorAwareContainer
и
SequenceContainer
.
Все функции-члены
std::forward_list
являются
constexpr
: возможно создавать и использовать объекты
std::forward_list
при вычислении константного выражения.
Однако, объекты
|
(since C++26) |
Содержание |
Параметры шаблона
| T | - |
Тип элементов.
|
||||||||||||
| Allocator | - |
Аллокатор, который используется для выделения/освобождения памяти и для создания/уничтожения элементов в этой памяти. Тип должен удовлетворять требованиям
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 ) |
reference
|
value_type & |
const_reference
|
const value_type & |
pointer
|
std:: allocator_traits < Allocator > :: pointer |
const_pointer
|
std:: allocator_traits < Allocator > :: const_pointer |
iterator
|
LegacyForwardIterator
и
ConstexprIterator
(начиная с C++26)
для
value_type
|
const_iterator
|
LegacyForwardIterator и ConstexprIterator (начиная с C++26) для const value_type |
Функции-члены
конструирует
forward_list
(публичная функция-член) |
|
уничтожает
forward_list
(public member function) |
|
|
присваивает значения контейнеру
(публичная функция-член) |
|
|
присваивает значения контейнеру
(публичная функция-член) |
|
|
(C++23)
|
присваивает диапазон значений контейнеру
(публичная функция-член) |
|
возвращает связанный аллокатор
(публичная функция-член) |
|
Доступ к элементам |
|
|
доступ к первому элементу
(public member function) |
|
Итераторы |
|
|
возвращает итератор на элемент перед началом
(публичная функция-член) |
|
|
возвращает итератор на начало
(публичная функция-член) |
|
|
возвращает итератор на конец
(публичная функция-член) |
|
Ёмкость |
|
|
проверяет, является ли контейнер пустым
(публичная функция-член) |
|
|
возвращает максимально возможное количество элементов
(public member function) |
|
Модификаторы |
|
|
очищает содержимое
(публичная функция-член) |
|
|
вставляет элементы после элемента
(публичная функция-член) |
|
|
создаёт элементы на месте после элемента
(публичная функция-член) |
|
|
(C++23)
|
вставляет диапазон элементов после элемента
(публичная функция-член) |
|
удаляет элемент после указанного элемента
(публичная функция-член) |
|
|
вставляет элемент в начало
(public member function) |
|
|
создаёт элемент на месте в начале списка
(публичная функция-член) |
|
|
(C++23)
|
добавляет диапазон элементов в начало
(public member function) |
|
удаляет первый элемент
(публичная функция-член) |
|
|
изменяет количество хранимых элементов
(публичная функция-член) |
|
|
обменивает содержимое
(public member function) |
|
Операции |
|
|
объединяет два отсортированных списка
(публичная функция-член) |
|
переносит элементы из другого
forward_list
(публичная функция-член) |
|
|
удаляет элементы, удовлетворяющие определенным критериям
(public member function) |
|
|
изменяет порядок элементов на обратный
(public member function) |
|
|
удаляет последовательные повторяющиеся элементы
(public member function) |
|
|
сортирует элементы
(public member function) |
|
Функции, не являющиеся членами класса
|
(C++11)
(C++11)
(удалено в C++20)
(C++11)
(удалено в C++20)
(C++11)
(удалено в C++20)
(C++11)
(удалено в C++20)
(C++11)
(удалено в C++20)
(C++20)
|
лексикографически сравнивает значения двух
forward_list
s
(шаблон функции) |
|
(C++11)
|
специализирует алгоритм
std::swap
(шаблон функции) |
|
удаляет все элементы, удовлетворяющие определенным критериям
(шаблон функции) |
Руководства по выводу |
(начиная с C++17) |
Примечания
| Макрос тестирования возможностей | Значение | Стандарт | Функция |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Конструирование и вставка диапазонов для контейнеров |
__cpp_lib_constexpr_forward_list
|
202502L
|
(C++26) |
constexpr
std::forward_list
|
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
двусвязный список
(шаблон класса) |