Espacios de nombres
Variantes
Acciones

std::list

De cppreference.com
< cpp‎ | container
 
 
 
 
Definido en el archivo de encabezado <list>
template<

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

> class list;
(1)
namespace pmr {

    template <class T>
    using list = std::list<T, std::pmr::polymorphic_allocator<T>>;

}
(2) (desde C++17)

std::list es un contenedor que admite la inserción y eliminación en tiempo constante de elementos desde cualquier lugar del contenedor. No se admite el acceso aleatorio rápido. Suele implementarse como una lista doblemente enlazada. En comparación con std::forward_list, este contenedor proporciona capacidad de iteración bidireccional y, al mismo tiempo, es menos eficiente en cuanto al espacio.

Agregar, eliminar y mover los elementos dentro de la lista o entre varias listas no invalida los iteradores o referencias. Un iterador se invalida solo cuando se elimina el elemento correspondiente.

std::list cumple con los requerimientos de Contenedor, ContenedorConscienteDeAsignador, ContenedorDeSecuencia y ContenedorReversible.

Contenido

[editar] Parámetros de plantilla

T - El tipo de los elementos.
T debe cumplir con los requisitos de AsignablePorCopia y ConstruiblePorCopia. (hasta C++11)
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. (desde C++11)
(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 Allocator::reference (hasta C++11)
value_type& (desde C++11) [editar]
const_reference Allocator::const_reference (hasta C++11)
const value_type& (desde C++11) [editar]
pointer Allocator::pointer (hasta C++11)
std::allocator_traits<Allocator>::pointer (desde C++11) [editar]
const_pointer Allocator::const_pointer (hasta C++11)
std::allocator_traits<Allocator>::const_pointer (desde C++11) [editar]
iterator IteradorBidireccionalLegado [editar]
const_iterator IteradorBidireccionalLegado constante [editar]
reverse_iterator std::reverse_iterator<iterator> [editar]
const_reverse_iterator std::reverse_iterator<const_iterator> [editar]

[editar] Funciones miembro

Construye el contenedor list.
(función miembro pública) [editar]
Destruye el contenedor list.
(función miembro pública) [editar]
Asigna valores al contenedor.
(función miembro pública) [editar]
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
Accede al primer elemento.
(función miembro pública) [editar]
Accede al último elemento.
(función miembro pública) [editar]
Iteradores
Devuelve un iterador al principio.
(función miembro pública) [editar]
(C++11)
Devuelve un iterador al final.
(función miembro pública) [editar]
Devuelve un iterador inverso al principio.
(función miembro pública) [editar]
Devuelve un iterador inverso al final.
(función miembro pública) [editar]
Capacidad
Comprueba si el contenedor está vacío.
(función miembro pública) [editar]
Devuelve el número de elementos.
(función miembro pública) [editar]
Devuelve el número máximo posible de elementos.
(función miembro pública) [editar]
Modificadores
Borra el contenido.
(función miembro pública) [editar]
Inserta elementos
(función miembro pública) [editar]
Inserta un rango de elementos.
(función miembro pública) [editar]
(C++11)
Construye el elemento en el sitio.
(función miembro pública) [editar]
Borra elementos
(función miembro pública) [editar]
Agrega elementos al final.
(función miembro pública) [editar]
Construye un elemento en el sitio al final.
(función miembro pública) [editar]
Agrega un rango de elementos al final.
(función miembro pública) [editar]
Remueve el último 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]
Remueve el primer elemento.
(función miembro pública) [editar]
Cambia el número de elementos almacenados.
(función miembro pública) [editar]
Intercambia el contenido.
(función miembro pública) [editar]
Operaciones
Fusiona dos listas ordenadas.
(función miembro pública) [editar]
Mueve elementos de otro contenedor list.
(función miembro pública) [editar]
Elimina elementos que satisfacen un criterio específico.
(función miembro pública) [editar]
Invierte el orden de los elementos.
(función miembro pública) [editar]
Elimina elementos consecutivos duplicados.
(función miembro pública) [editar]
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 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]

[editar] Guías de deducción(desde C++17)

[editar] Ejemplo

#include <algorithm>
#include <iostream>
#include <list>
 
int main()
{
    // Crear una lista que contiene enteros
    std::list<int> l = { 7, 5, 16, 8 };
 
    // Agregar un entero al frente de la lista
    l.push_front(25);
    // Agregar un entero al final de la lista
    l.push_back(13);
 
    // Insertar un entero antes de 16 mediante búsqueda
    auto it = std::find(l.begin(), l.end(), 16);
    if (it != l.end()) {
        l.insert(it, 42);
    }
 
    // Imprimir la lista
    std::cout << "l = { ";
    for (int n : l) {
        std::cout << n << ", ";
    }
    std::cout << "};\n";
}

Salida:

l = { 25, 7, 5, 42, 16, 8, 13, };