std::forward_list
| Определено в заголовочном файле <forward_list>
|
||
template< class T, class Allocator = std::allocator<T> > class forward_list; |
(1) | (начиная с C++11) |
namespace pmr { template <class T> using forward_list = std::forward_list<T, std::pmr::polymorphic_allocator<T>>; } |
(2) | (начиная с C++17) |
std::forward_list это контейнер, который поддерживает быструю вставку и удаление элементов из любого места в контейнере. Быстрый произвольный доступ не поддерживается. Он реализован в виде односвязного списка. По сравнению с std::list этот контейнер обеспечивает более эффективное хранение, когда двунаправленная итерация не требуется.
Добавление, удаление и перемещение элементов в списке или в нескольких списках не делает недействительными итераторы, которые в настоящее время ссылаются на другие элементы в списке. Однако итератор или ссылка, ссылающиеся на элемент, становятся недействительными, когда соответствующий элемент удаляется (через erase_after) из списка.
std::forward_list отвечает требованиям Container (за исключением функции-элемента size(), а сложность operator== всегда линейна), AllocatorAwareContainer и SequenceContainer.
Параметры шаблона
| T | — | Тип элементов.
| ||||||||||||
| Allocator | — | Аллокатор, который используется для получения/освобождения памяти и создания/уничтожения элементов в этой памяти. Тип должен соответствовать требованиям Allocator. Поведение не определено (до C++20)Программа не корректна (начиная с 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 в value_type
|
const_iterator
|
LegacyForwardIterator в const value_type
|
Функции-элементы
(C++11) |
создаёт forward_list (public функция-элемент) |
(C++11) |
уничтожает forward_list (public функция-элемент) |
(C++11) |
присваивает значения контейнеру (public функция-элемент) |
(C++11) |
присваивает значения контейнеру (public функция-элемент) |
(C++23) |
присваивает диапазон значений контейнеру (public функция-элемент) |
(C++11) |
возвращает связанный аллокатор (public функция-элемент) |
Доступ к элементам | |
(C++11) |
предоставляет доступ к первому элементу (public функция-элемент) |
Итераторы | |
(C++11) |
возвращает итератор на элемент, предшествующий первому (public функция-элемент) |
(C++11) |
возвращает итератор на начало (public функция-элемент) |
(C++11) |
возвращает итератор на конец (public функция-элемент) |
Ёмкость | |
(C++11) |
проверяет, пуст ли контейнер (public функция-элемент) |
(C++11) |
возвращает максимально возможное количество элементов (public функция-элемент) |
Модификаторы | |
(C++11) |
очищает содержимое (public функция-элемент) |
(C++11) |
вставляет элементы после указанного элемента (public функция-элемент) |
(C++11) |
создаёт элементы на месте после указанного элемента (public функция-элемент) |
(C++23) |
вставляет диапазон элементов после элемента (public функция-элемент) |
(C++11) |
удаляет элементы после указанного элемента (public функция-элемент) |
(C++11) |
вставляет элемент в начало списка (public функция-элемент) |
(C++11) |
создаёт элементы на месте в начале списка (public функция-элемент) |
(C++23) |
добавляет диапазон элементов в начало (public функция-элемент) |
(C++11) |
удаляет первый элемент (public функция-элемент) |
(C++11) |
изменяет количество хранимых элементов (public функция-элемент) |
(C++11) |
обменивает содержимое (public функция-элемент) |
Операции | |
(C++11) |
сливает два отсортированных списка (public функция-элемент) |
(C++11) |
перемещает элементы из другого forward_list (public функция-элемент) |
(C++11) |
удаляет элементы, соответствующие определённым критериям (public функция-элемент) |
(C++11) |
меняет порядок элементов на обратный (public функция-элемент) |
(C++11) |
удаляет последовательные повторяющиеся элементы (public функция-элемент) |
(C++11) |
сортирует элементы (public функция-элемент) |
Функции, не являющиеся элементами
(удалено в C++20)(удалено в C++20)(удалено в C++20)(удалено в C++20)(удалено в C++20)(C++20) |
лексикографически сравнивает значения в forward_list (шаблон функции) |
(C++11) |
специализация алгоритма std::swap (шаблон функции) |
| удаляет все элементы, соответствующие определённым критериям (шаблон функции) |
Правила вывода |
(начиная с C++17) |
Примечание
| Макрос тест функциональности | Значение | Стандарт | Комментарий |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | Создание и вставка диапазонов для контейнеров |
Пример
| Этот раздел не завершён Причина: нет примера |