std::list
| 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.
Parámetros de plantilla
| T | - | El tipo de los elementos.
| ||||||||||||||
| 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.
|
Tipos miembro
| Tipo miembro | Definición |
value_type
|
T
|
allocator_type
|
Allocator
|
size_type
|
Tipo entero sin signo (por lo general std::size_t) |
difference_type
|
Tipo entero con signo (por lo general std::ptrdiff_t) |
reference
|
Allocator::reference (hasta C++11)value_type& (desde C++11)
|
const_reference
|
Allocator::const_reference (hasta C++11)const value_type& (desde C++11)
|
pointer
|
Allocator::pointer (hasta C++11)std::allocator_traits<Allocator>::pointer (desde C++11)
|
const_pointer
|
Allocator::const_pointer (hasta C++11)std::allocator_traits<Allocator>::const_pointer (desde C++11)
|
iterator
|
IteradorBidireccionalLegado |
const_iterator
|
IteradorBidireccionalLegado constante |
reverse_iterator
|
std::reverse_iterator<iterator>
|
const_reverse_iterator
|
std::reverse_iterator<const_iterator>
|
Funciones miembro
Construye el contenedor list. (función miembro pública) | |
Destruye el contenedor 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 de memoria asociado. (función miembro pública) | |
Acceso a elementos | |
| Accede al primer elemento. (función miembro pública) | |
| Accede al último elemento. (función miembro pública) | |
Iteradores | |
(C++11) |
Devuelve un iterador al principio. (función miembro pública) |
(C++11) |
Devuelve un iterador al final. (función miembro pública) |
(C++11) |
Devuelve un iterador inverso al principio. (función miembro pública) |
(C++11) |
Devuelve un iterador inverso al final. (función miembro pública) |
Capacidad | |
| Comprueba si el contenedor está vacío. (función miembro pública) | |
| Devuelve el número de elementos. (función miembro pública) | |
| Devuelve el número máximo posible de elementos. (función miembro pública) | |
Modificadores | |
| Borra el contenido. (función miembro pública) | |
| Inserta elementos (función miembro pública) | |
(C++23) |
Inserta un rango de elementos. (función miembro pública) |
(C++11) |
Construye el elemento en el sitio. (función miembro pública) |
| Borra elementos (función miembro pública) | |
| Agrega elementos al final. (función miembro pública) | |
(C++11) |
Construye un elemento en el sitio al final. (función miembro pública) |
(C++23) |
Agrega un rango de elementos al final. (función miembro pública) |
| Remueve el último elemento. (función miembro pública) | |
| Inserta un elemento al principio del contenedor. (función miembro pública) | |
(C++11) |
Construye un elemento en el sitio al principio del contenedor. (función miembro pública) |
(C++23) |
Agrega un rango de elementos al principio. (función miembro pública) |
| Remueve el primer elemento. (función miembro pública) | |
| Cambia el número de elementos almacenados. (función miembro pública) | |
| Intercambia el contenido. (función miembro pública) | |
Operaciones | |
| Fusiona dos listas ordenadas. (función miembro pública) | |
Mueve elementos de otro contenedor list. (función miembro pública) | |
| Elimina elementos que satisfacen un criterio específico. (función miembro pública) | |
| Invierte el orden de los elementos. (función miembro pública) | |
| Elimina elementos consecutivos duplicados. (función miembro pública) | |
| Ordena los elementos. (función miembro pública) | |
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) |
| Especializa el algoritmo std::swap. (plantilla de función) | |
| Borra todos los elementos que satisfacen un criterio específico. (plantilla de función) |
Guías de deducción(desde C++17)
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, };