std:: forward_list
|
Definido en el encabezado
<forward_list>
|
||
|
template
<
class
T,
|
(1) | (desde C++11) |
|
namespace
pmr
{
template
<
class
T
>
|
(2) | (desde C++17) |
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.
std::forward_list
cumple con los requisitos de
Container
(excepto por la función miembro
size
y que la complejidad de
operator==
siempre es lineal),
AllocatorAwareContainer
y
SequenceContainer
.
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,
|
(since C++26) |
Contenidos |
Parámetros de plantilla
| T | - |
El tipo de los elementos.
|
||||||||||||
| Allocator | - |
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 ) |
reference
|
value_type & |
const_reference
|
const value_type & |
pointer
|
std:: allocator_traits < Allocator > :: pointer |
const_pointer
|
std:: allocator_traits < Allocator > :: const_pointer |
iterator
|
LegacyForwardIterator
y
ConstexprIterator
(desde C++26)
a
value_type
|
const_iterator
|
LegacyForwardIterator y ConstexprIterator (desde C++26) a const value_type |
Funciones miembro
construye el
forward_list
(función miembro pública) |
|
destruye el
forward_list
(función miembro pública) |
|
|
asigna valores al contenedor
(función miembro pública) |
|
|
asigna valores al contenedor
(función miembro pública) |
|
|
(C++23)
|
asigna un rango de valores al contenedor
(función miembro pública) |
|
devuelve el asignador asociado
(función miembro pública) |
|
Acceso a elementos |
|
|
accede al primer elemento
(función miembro pública) |
|
Iteradores |
|
|
devuelve un iterador al elemento anterior al inicio
(función miembro pública) |
|
|
devuelve un iterador al inicio
(función miembro pública) |
|
|
devuelve un iterador al final
(función miembro pública) |
|
Capacidad |
|
|
comprueba si el contenedor está vacío
(función miembro pública) |
|
|
devuelve el número máximo posible de elementos
(función miembro pública) |
|
Modificadores |
|
|
limpia el contenido
(función miembro pública) |
|
|
inserta elementos después de un elemento
(función miembro pública) |
|
|
construye elementos in-situ después de un elemento
(función miembro pública) |
|
|
(C++23)
|
inserta un rango de elementos después de un elemento
(función miembro pública) |
|
elimina un elemento después de un elemento
(función miembro pública) |
|
|
inserta un elemento al principio
(función miembro pública) |
|
|
construye un elemento in situ al principio
(función miembro pública) |
|
|
(C++23)
|
agrega un rango de elementos al principio
(función miembro pública) |
|
elimina el primer elemento
(función miembro pública) |
|
|
cambia el número de elementos almacenados
(función miembro pública) |
|
|
intercambia los contenidos
(función miembro pública) |
|
Operaciones |
|
|
fusiona dos listas ordenadas
(función miembro pública) |
|
transfiere elementos desde otro
forward_list
(función miembro pública) |
|
|
elimina elementos que cumplen criterios específicos
(función miembro pública) |
|
|
invierte el orden de los elementos
(función miembro pública) |
|
|
elimina elementos duplicados consecutivos
(función miembro pública) |
|
|
ordena los elementos
(función miembro pública) |
|
Funciones no miembro
|
(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) |
|
(C++11)
|
especializa el algoritmo
std::swap
(plantilla de función) |
|
elimina todos los elementos que cumplen criterios específicos
(plantilla de función) |
Guías de deducción |
(desde C++17) |
Notas
| Macro de prueba de características | Valor | Std | Característica |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construcción e inserción de rangos para contenedores |
__cpp_lib_constexpr_forward_list
|
202502L
|
(C++26) |
constexpr
std::forward_list
|
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Véase también
|
lista doblemente enlazada
(plantilla de clase) |