std::forward_list
es un contenedor que permite la inserción y eliminación rápida de elementos en cualquier parte del contenedor. No admite acceso aleatorio rápido. Se implementa como una lista simplemente enlazada. En comparación con
std::list
este contenedor proporciona un almacenamiento más eficiente en espacio cuando no se necesita iteración bidireccional.
Agregar, eliminar y mover elementos dentro de la lista, o entre varias listas, no invalida los iteradores que actualmente hacen referencia a otros elementos en la lista. Sin embargo, un iterador o referencia que se refiere a un elemento se invalida cuando el elemento correspondiente es eliminado (mediante
erase_after
) de la lista.
Todas las funciones miembro de
std::forward_list
son
constexpr
: es posible crear y utilizar objetos
std::forward_list
en la evaluación de una expresión constante.
Sin embargo,
std::forward_list
generalmente no puede ser
constexpr
, porque cualquier almacenamiento asignado dinámicamente debe liberarse en la misma evaluación de la expresión constante.
Los requisitos que se imponen sobre los elementos dependen de las operaciones reales realizadas en el contenedor. Generalmente, se requiere que el tipo de elemento sea un tipo completo y cumpla con los requisitos de
Erasable
, pero muchas funciones miembro imponen requisitos más estrictos.
(until C++17)
Los requisitos que se imponen sobre los elementos dependen de las operaciones reales realizadas en el contenedor. Generalmente, se requiere que el tipo de elemento cumpla con los requisitos de
Erasable
, pero muchas funciones miembro imponen requisitos más estrictos. Este contenedor (pero no sus miembros) puede instanciarse con un tipo de elemento incompleto si el asignador satisface los
requisitos de completitud del asignador
.
Un asignador que se utiliza para adquirir/liberar memoria y para construir/destruir los elementos en esa memoria. El tipo debe cumplir con los requisitos de
Allocator
.
El comportamiento es indefinido
(until C++20)
El programa está mal formado
(since C++20)
si
Allocator::value_type
no es el mismo que
T
.
Tipos de miembros
Tipo de miembro
Definición
value_type
T
allocator_type
Allocator
size_type
tipo entero sin signo (normalmente std::size_t)
difference_type
tipo entero con signo (normalmente std::ptrdiff_t)
(C++11)
(C++11)
(eliminado en C++20)
(C++11)
(eliminado en C++20)
(C++11)
(eliminado en C++20)
(C++11)
(eliminado en C++20)
(C++11)
(eliminado en C++20)
(C++20)
compara lexicográficamente los valores de dos
forward_list
s
(plantilla de función)