std::list
Definido en el archivo de encabezado <list>
|
||
template< class T, |
(1) | |
namespace pmr { template <class 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.
| ||||||||||||||
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] 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> |
[editar] 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) |
[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) |
Especializa el algoritmo std::swap. (plantilla de función) | |
Borra todos los elementos que satisfacen un criterio específico. (plantilla de función) |
[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, };