Espacios de nombres
Variantes
Acciones

std::forward_list

De cppreference.com
< cpp‎ | container
 
 
 
 
Definido en el archivo de 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 admite la inserción y eliminación rápida de elementos desde cualquier lugar del contenedor. No se admite el acceso aleatorio rápido. Se implementa como una lista enlazada (o 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 los elementos dentro de la lista, o entre varias listas, no invalida los iteradores que se refieren actualmente a otros elementos de la lista. Sin embargo, un iterador o referencia que hace referencia a un elemento se invalida cuando el elemento correspondiente se elimina (a través de erase_after) de la lista.

std::forward_list cumple con los requerimientos de Contenedor (excepto por la función miembro size y la complejidad del operador operator==, cuya complejidad siempre es lineal), ContenedorConscienteDeAsignador y ContenedorDeSecuencia.

Contenido

[editar] Parámetros de plantilla

T - El tipo de los elementos.
Los requisitos que se imponen a los elementos dependen de las operaciones actuales realizadas en el contenedor. Generalmente, se requiere que el tipo de elemento sea un tipo completo y cumpla con los requisitos de Borrable, pero muchas funciones miembro imponen requisitos más estrictos. (hasta C++17)

Los requisitos que se imponen a los elementos dependen de las operaciones actuales realizadas en el contenedor. Generalmente, se requiere que el tipo de elemento cumpla con los requisitos de Borrable, pero muchas funciones miembro imponen requisitos más estrictos. Este contenedor (pero no sus miembros) se puede instanciar con un tipo de elemento incompleto si el asignador satisface los requisitos de completitud del asignador.


Macro de Prueba de característica Valor Estándar Comentario
__cpp_lib_incomplete_container_elements 201505L (C++17) Apoyo mínimo para tipos incompletos.
(desde C++17)

[editar]

Allocator - Un asignador que se usa para adquirir y liberar memoria, y para construir y destruir los elementos en esa memoria. El tipo debe cumplir con los requisitos de Asignador. El comportamiento no está definido si Allocator::value_type no es el mismo que T. [editar]

[editar] Tipos miembro

Tipo miembro Definición
value_type T [editar]
allocator_type Allocator [editar]
size_type Tipo entero sin signo (por lo general std::size_t) [editar]
difference_type Tipo entero con signo (por lo general std::ptrdiff_t) [editar]
reference value_type& [editar]
const_reference const value_type& [editar]
pointer std::allocator_traits<Allocator>::pointer [editar]
const_pointer std::allocator_traits<Allocator>::const_pointer [editar]
iterator IteradorDeAvanceLegado [editar]
const_iterator IteradorDeAvanceLegado constante [editar]

[editar] Funciones miembro

Construye el contenedor forward_list.
(función miembro pública) [editar]
Destruye el contenedor forward_list.
(función miembro pública) [editar]
(C++11)
Asigna valores al contenedor.
(función miembro pública) [editar]
(C++11)
Asigna valores al contenedor.
(función miembro pública) [editar]
Asigna un rango de valores al contenedor.
(función miembro pública) [editar]
Devuelve el asignador de memoria asociado.
(función miembro pública) [editar]
Acceso a elementos
(C++11)
Accede al primer elemento.
(función miembro pública) [editar]
Iteradores
Devuelve un iterador al elemento antes del principio del contenedor.
(función miembro pública) [editar]
Devuelve un iterador al principio.
(función miembro pública) [editar]
(C++11)
Devuelve un iterador al final.
(función miembro pública) [editar]
Capacidad
(C++11)
Comprueba si el contenedor está vacío.
(función miembro pública) [editar]
(C++11)
Devuelve el número máximo posible de elementos.
(función miembro pública) [editar]
Modificadores
(C++11)
Borra el contenido.
(función miembro pública) [editar]
Inserta elementos después de un elemento.
(función miembro pública) [editar]
Construye elementos en el sitio después de un elemento.
(función miembro pública) [editar]
Inserta un rango de elementos después de un elemento.
(función miembro pública) [editar]
Borra un elemento después de un elemento.
(función miembro pública) [editar]
Inserta un elemento al principio del contenedor.
(función miembro pública) [editar]
Construye un elemento en el sitio al principio del contenedor.
(función miembro pública) [editar]
Agrega un rango de elementos al principio.
(función miembro pública) [editar]
(C++11)
Remueve el primer elemento.
(función miembro pública) [editar]
(C++11)
Cambia el número de elementos almacenados.
(función miembro pública) [editar]
(C++11)
Intercambia el contenido.
(función miembro pública) [editar]
Operaciones
(C++11)
Fusiona dos listas ordenadas.
(función miembro pública) [editar]
Mueve elementos de otro contenedor forward_list.
(función miembro pública) [editar]
Elimina elementos que satisfacen un criterio específico.
(función miembro pública) [editar]
(C++11)
Invierte el orden de los elementos.
(función miembro pública) [editar]
(C++11)
Elimina elementos consecutivos duplicados.
(función miembro pública) [editar]
(C++11)
Ordena los elementos.
(función miembro pública) [editar]

[editar] Funciones no miembro

(eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(C++20)
Compara lexicográficamente los valores de forward_list.
(plantilla de función) [editar]
Especializa el algoritmo std::swap.
(plantilla de función) [editar]
Borra todos los elementos que satisfacen un criterio específico.
(plantilla de función) [editar]

Guías de deducción

(desde C++17)

[editar] Notas

Macro de prueba de característica Valor Estándar Comentario
__cpp_lib_containers_ranges 202202L (C++23) Construcción de rangos e inserción para contenedores.

[editar] Ejemplo

[editar] Véase también

Lista doblemente enlazada.
(plantilla de clase) [editar]