Namespaces
Variants

std:: forward_list

From cppreference.net
Definido en el encabezado <forward_list>
template <

class T,
class Allocator = std:: allocator < T >

> class forward_list ;
(1) (desde C++11)
namespace pmr {

template < class T >
using forward_list = std :: forward_list < T, std:: pmr :: polymorphic_allocator < 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, 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.

(since C++26)

Contenidos

Parámetros de plantilla

T - El tipo de los elementos.
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 .

Macro de prueba de características Valor Std Característica
__cpp_lib_incomplete_container_elements 201505L (C++17) Soporte mínimo para tipos incompletos
(since C++17)

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)
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)
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)
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)
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

Véase también

lista doblemente enlazada
(plantilla de clase)