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 | Легаси-итератор вперед для value_type |
const_iterator | Легаси-итератор вперед для const value_type |
Члены-функции
создаёт forward_list (публичный член-функция) |
|
уничтожает forward_list (публичный член-функция) |
|
| присваивает значения контейнеру (публичный член-функция) |
|
| присваивает значения контейнеру (публичный член-функция) |
|
|
(C++23) | присваивает диапазон значений контейнеру (публичный член-функция) |
| возвращает связанный аллокатор (публичный член-функция) |
|
Доступ к элементам |
|
| доступ к первому элементу (публичный член-функция) |
|
Итераторы |
|
| возвращает итератор к элементу перед началом (публичный член-функция) |
|
| возвращает итератор к началу (публичный член-функция) |
|
| возвращает итератор к концу (публичный член-функция) |
|
Ёмкость |
|
| проверяет, пуст ли контейнер (публичный член-функция) |
|
| возвращает максимальное возможное количество элементов (публичный член-функция) |
|
Модификаторы |
|
| очищает содержимое (публичный член-функция) |
|
| вставляет элементы после элемента (публичный член-функция) |
|
| создаёт элементы на месте после элемента (публичный член-функция) |
|
|
(C++23) | вставляет диапазон элементов после элемента (публичный член-функция) |
| удаляет элемент после элемента (публичный член-функция) |
|
| вставляет элемент в начало (публичный член-функция) |
|
| создаёт элемент на месте в начале (публичный член-функция) |
|
|
(C++23) | добавляет диапазон элементов в начало (публичный член-функция) |
| удаляет первый элемент (публичный член-функция) |
|
| изменяет количество хранимых элементов (публичный член-функция) |
|
| меняет содержимое (публичный член-функция) |
|
Операции |
|
| объединяет два отсортированных списка (публичный член-функция) |
|
перемещает элементы из другого forward_list (публичный член-функция) |
|
| удаляет элементы, удовлетворяющие определённым критериям (публичный член-функция) |
|
| меняет порядок элементов на обратный (публичный член-функция) |
|
| удаляет последовательные дублирующиеся элементы (публичный член-функция) |
|
| сортирует элементы (публичный член-функция) |
|
Нечлен-функции
|
(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_lists (шаблон функции) |
|
(C++11) | специализация алгоритма std::swap (шаблон функции) |
|
(C++20) | удаляет все элементы, удовлетворяющие определённым критериям (шаблон функции) |
Руководства по выводу | (с C++17) |
Примечания
| Feature-test макрос | Значение | Std | Функция |
|---|---|---|---|
__cpp_lib_containers_ranges | 202202L | (C++23) | Конструирование и вставка диапазонов для контейнеров |
Пример
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/forward_list